Dart 编程中的异步和等待

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