繁体   English   中英

Dart中可变数量异步函数的顺序处理

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM