Flutter中Future和Completer的区别
在 Flutter 中,Future
和 Completer
是两个与异步编程相关的不同类。
Future
表示将来某个时候可用的值。这是一个异步操作,将在某个时刻完成,当它完成时,它将返回一个值或一个错误。当应用程序对用户保持响应时,你可以使用 Future
在后台执行操作。操作完成后,您可以更新UI以反映结果。
Completer
是一种手动创建 Future
的方法。它提供了明确地完成或失败未来的方法,允许您控制它何时完成。当您需要等待多个异步操作完成并组合它们的结果时,Completer
非常有用。
这里有一个例子来说明 Future
和 completion
之间的区别:
// Using a Future
Future<int> fetchNumber() async {
// Simulate a network delay
await Future.delayed(Duration(seconds: 2));
return 42;
}
void main() async {
print("Start");
final number = await fetchNumber();
print("The answer is $number");
print("End");
}
// Output:
// Start
// The answer is 42
// End
在这个例子中,fetchNumber
返回一个 Future<int>
,在2秒后完成。main
函数使用await
关键字等待 future
语句完成,然后输出结果。
// Using a Completer
Completer<int> fetchNumber() {
final completer = Completer<int>();
// Simulate a network delay
Future.delayed(Duration(seconds: 2), () {
completer.complete(42);
});
return completer;
}
void main() async {
print("Start");
final completer = fetchNumber();
final number = await completer.future;
print("The answer is $number");
print("End");
}
// Output:
// Start
// The answer is 42
// End
在这个例子中,fetchNumber
创建了一个 Completer<int>
并返回它。完成器在2秒后完成,它的未来在 mian
函数中被等待以获得结果。
转载自:https://juejin.cn/post/7238570834344198203