Async 和 Await 关键字用于提供一种声明方式来定义异步函数并使用其结果。
在异步的关键字用来当我们要声明一个功能和异步的await关键字仅用于异步功能。
void main() async { .. }
如果函数具有声明的返回类型,则将 Future<T> 的类型更新为返回类型。
Future<void> main() async { .. }
最后,当我们想等待异步函数完成时,我们使用 await 关键字。
await someAsynchronousFunction()
让我们考虑一个例子,我们在 async 关键字的帮助下声明 main 函数,然后使用 await 关键字等待异步结果。
Future<void> printDelayedMessage() { return Future.delayed(Duration(seconds: 4), () => print('Delayed Output.')); } void main() async { await printDelayedMessage(); // 将阻塞输出直到异步结果 print('First output ...'); }输出结果
Delayed Output. First output ...
让我们考虑一个更完整的示例,其中我们同时使用 async 和 await 关键字。
考虑下面显示的例子 -
void main() async { var userEmailFuture = getUserEmail(); // 注册回调 await userEmailFuture.then((userEmail) => print(userEmail)); print('Hello'); } // 计算未来的方法 Future<String> getUserEmail() { // 模拟长时间的网络通话 return Future.delayed(Duration(seconds: 4), () => "mukul@nhooo.com"); }输出结果
mukul@nhooo.com Hello