Dart:多个等待同一个未来
Dart: multiple await for same future
我最近看到了一些代码示例,如下所示
Future<Null> ensureLogin() {...}
var login = ensureLogin();
Future functionA() async {
await login;
print("FunctionA finished");
}
Future functionB() async {
await login;
print("FunctionB finished");
}
void main() {
functionA();
functionB()
}
当 future 完成时,打印如下:
FunctionA finished
FunctionB finished
看起来我们可以对同一个未来对象进行多次等待?但这在幕后是如何工作的?它相当于 Future 是什么?也许像下面这样?
login.then(functionA).then(fucntionB)
您可以使用 then(...)
为单个 Future
实例注册任意数量的回调。
没有 async
/await
看起来像
Future functionA() async {
login.then((r) {
print("FunctionA finished");
});
}
Future functionB() async {
login.then((r) {
print("FunctionB finished");
});
}
当login
完成后,所有注册的回调将被依次调用。
如果调用login.then((r) { ... })
时login
已经完成,则在当前同步代码执行完成后调用回调。
我想你可以简单地使用:
Future.wait(
[
method1(),
method2(),
]
).then((){});
我最近看到了一些代码示例,如下所示
Future<Null> ensureLogin() {...}
var login = ensureLogin();
Future functionA() async {
await login;
print("FunctionA finished");
}
Future functionB() async {
await login;
print("FunctionB finished");
}
void main() {
functionA();
functionB()
}
当 future 完成时,打印如下:
FunctionA finished
FunctionB finished
看起来我们可以对同一个未来对象进行多次等待?但这在幕后是如何工作的?它相当于 Future 是什么?也许像下面这样?
login.then(functionA).then(fucntionB)
您可以使用 then(...)
为单个 Future
实例注册任意数量的回调。
没有 async
/await
看起来像
Future functionA() async {
login.then((r) {
print("FunctionA finished");
});
}
Future functionB() async {
login.then((r) {
print("FunctionB finished");
});
}
当login
完成后,所有注册的回调将被依次调用。
如果调用login.then((r) { ... })
时login
已经完成,则在当前同步代码执行完成后调用回调。
我想你可以简单地使用:
Future.wait(
[
method1(),
method2(),
]
).then((){});