面试题答案
一键面试Future.wait
的作用:Future.wait
用于并发执行多个Future
对象,并返回一个新的Future
。这个新的Future
会在所有传入的Future
都完成(成功或失败)时完成。如果所有传入的Future
都成功完成,新的Future
会包含一个包含所有成功结果的列表;如果任何一个传入的Future
失败,新的Future
会以该失败的Future
的错误终止。
- 示例代码:
import 'dart:async';
void main() async {
List<Future<int>> futures = [
Future.delayed(const Duration(seconds: 1), () => 1),
Future.delayed(const Duration(seconds: 2), () => 2),
Future.delayed(const Duration(seconds: 3), () => 3)
];
try {
List results = await Future.wait(futures);
print('所有任务完成,结果: $results');
} catch (e) {
print('有任务失败: $e');
}
}
在上述代码中:
- 首先定义了一个包含三个
Future
的列表futures
,每个Future
都延迟不同的时间并返回一个整数。 - 然后使用
Future.wait
等待所有这些Future
完成,并通过await
获取它们的结果。如果所有Future
都成功完成,results
将是一个包含这些Future
返回值的列表,并打印结果;如果有任何一个Future
失败,catch
块会捕获到错误并打印错误信息。