gpt4 book ai didi

dart - 当可以返回异步回调函数时为什么要使用完成器?

转载 作者:行者123 更新时间:2023-12-02 00:37:54 26 4
gpt4 key购买 nike

当您可以返回异步回调函数(将返回 future)时,使用完成器有什么好处吗?

示例:

Future function() {
return this.socket.request(successCallBack: (response) {
.......
return true;
}); // async call.

反对

   Future function() {
Completer c = new Completer();
this.socket.request( .. (...){// async callback.
c.complete(xyz);
});
return c.future;
}

这里, future 在两种情况下都返回 xyz 值。这是风格偏好吗?

最佳答案

完成器适用于更复杂的场景,例如,当您想用另一种方法来完成 future 而不是创建它时。在您的示例中,完成者是多余的。

class MyComponent {
Completer _initDoneCompleter;

MyComponent() {
Completer _initDoneCompleter = new Completer();
someStream.listen(_eventHandler);
}

void _eventHandler(e) {
if(e.someProperty == 'someValue') {
_initDoneCompleter.complete(e.someProperty);
}
}

static Future<MyComponent> createNew() async {
var c = new MyComponent();
await c.initDoneCompleter.future;
return c;
}
}

void main() async {
var c = await MyComponent.createNew();
}

关于dart - 当可以返回异步回调函数时为什么要使用完成器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32215862/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com