如何在 flutter 中获得并行期货的通知
How to get notified for a parallel futures in flutter
您好,我正在使用以下代码在 flutter 中进行并行网络调用。
List<dynamic> results = await Future.wait([
apiCall1(),
apiCall2(),
...more api calls
]);
我需要更新每个 api 呼叫的状态。有没有办法知道哪个 api 调用已成功完成并更新状态。
如果我在个人期货中使用 .then
,结果列表包含空值。
void main() async {
Future<int> future1 = Future.delayed(Duration(seconds: 1)).then((value) => 1);
Future<int> future2 = Future.delayed(Duration(seconds: 2)).then((value) => 2);
List<dynamic> results = await Future.wait([
future1.then((value) {
print(value);
}),
future2.then((value) {
print(value);
})
]);
print(results);
}
1
2
[null, null]
我认为最简单的方法是:
void main() async {
Future<int> future1 = apiCall1();
Future<int> future2 = apiCall2();
List<int> results = await Future.wait([
future1.then((value) {
print(value);
return value;
}),
future2.then((value) {
print(value);
return value;
})
]);
print(results);
}
Future<int> apiCall1() async {
await Future.delayed(Duration(seconds: 1));
return 1;
}
Future<int> apiCall2() async {
await Future.delayed(Duration(seconds: 2));
return 2;
}
您好,我正在使用以下代码在 flutter 中进行并行网络调用。
List<dynamic> results = await Future.wait([
apiCall1(),
apiCall2(),
...more api calls
]);
我需要更新每个 api 呼叫的状态。有没有办法知道哪个 api 调用已成功完成并更新状态。
如果我在个人期货中使用 .then
,结果列表包含空值。
void main() async {
Future<int> future1 = Future.delayed(Duration(seconds: 1)).then((value) => 1);
Future<int> future2 = Future.delayed(Duration(seconds: 2)).then((value) => 2);
List<dynamic> results = await Future.wait([
future1.then((value) {
print(value);
}),
future2.then((value) {
print(value);
})
]);
print(results);
}
1
2
[null, null]
我认为最简单的方法是:
void main() async {
Future<int> future1 = apiCall1();
Future<int> future2 = apiCall2();
List<int> results = await Future.wait([
future1.then((value) {
print(value);
return value;
}),
future2.then((value) {
print(value);
return value;
})
]);
print(results);
}
Future<int> apiCall1() async {
await Future.delayed(Duration(seconds: 1));
return 1;
}
Future<int> apiCall2() async {
await Future.delayed(Duration(seconds: 2));
return 2;
}