gpt4 book ai didi

asynchronous - Dart,如何在自己的函数中创建一个返回的 future ?

转载 作者:行者123 更新时间:2023-12-03 07:54:10 25 4
gpt4 key购买 nike

是否可以在 Dart 中创建自己的 future 以从您的方法返回,或者您必须始终从 dart 异步库方法之一返回内置的 future 返回?

我想定义一个总是返回 Future<List<Base>> 的函数无论是实际执行异步调用(文件读取/ajax/etc)还是只是获取局部变量,如下所示:

List<Base> aListOfItems = ...;

Future<List<Base>> GetItemList(){

return new Future(aListOfItems);

}

最佳答案

如果您需要创建 future ,可以使用 Completer .见 Completer class在文档中。下面是一个例子:

Future<List<Base>> GetItemList(){
var completer = new Completer<List<Base>>();

// At some time you need to complete the future:
completer.complete(new List<Base>());

return completer.future;
}
但大多数时候你不需要用完成者创造 future 。就像在这种情况下:
Future<List<Base>> GetItemList(){
var completer = new Completer();

aFuture.then((a) {
// At some time you need to complete the future:
completer.complete(a);
});

return completer.future;
}
使用完成器会使代码变得非常复杂。您可以简单地使用以下内容,因为 then()返回 Future , 也:
Future<List<Base>> GetItemList(){
return aFuture.then((a) {
// Do something..
});
}
或文件 io 的示例:
Future<List<String>> readCommaSeperatedList(file){
return file.readAsString().then((text) => text.split(','));
}
this blog post更多提示。

关于asynchronous - Dart,如何在自己的函数中创建一个返回的 future ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18423691/

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