如何顺序处理返回飞镖期货的函数?

时间:2019-05-05 10:50:55

标签: dart stream rxdart

如果我有一堆返回期货的函数。

是否有一种干净的方法来顺序调用返回期货的函数,并仅在当前期货成功完成后才继续下一个期货?还有取消流的机制吗?

是否可以使用RxDart做到这一点?

ValueGetter<Future<int>> getter1 = () => Future.value(1);
ValueGetter<Future<int>> getter2 = () => Future.delayed(Duration(seconds: 2)).then((_) => Future.value(2));
ValueGetter<Future<int>> getter3 = () => Future.delayed(Duration(seconds: 3)).then((_) => Future.value(3));
ValueGetter<Future<int>> getter4 = () => Future.delayed(Duration(seconds: 1)).then((_) => Future.value(4));

List<ValueGetter<Future<int>>> futureInts = [getter1, getter2, getter3, getter4];
for (int i = 0; i < futureInts.length; i++) {
  int anInteger = await futureInts[i]();
  print(anInteger);
}

//prints
// 1
// 2
// 3
// 4

0 个答案:

没有答案