[英]Sequential processing of a variable number of async functions in Dart
我需要在 Dart 中重复调用一个异步函数,让我们称它为expensiveFunction
,以获取可变数量的参数。 但是,由于每次调用都非常消耗内存,因此我无法并行运行它们。 如何强制它们按顺序运行?
我试过这个:
argList.forEach( await (int arg) async {
Completer c = new Completer();
expensiveFunction(arg).then( (result) {
// do something with the result
c.complete();
});
return c.future;
});
但并没有达到预期的效果。 仍然为argList
每个arg
并行调用expensiveFunction
argList
。 我其实需要的是在等待forEach
循环,直到expensiveFunction
完成,然后才用在下一单元进行argList
。 我怎样才能做到这一点?
你会想在这里使用经典的for
循环:
doThings() async {
for (var arg in argList) {
await expensiveFunction(arg).then((result) => ...);
}
}
语言之旅中有一些很好的例子。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.