Dart语法学习(14)

var entrypoint = await findEntrypoint(); var exitCode = await runExecutable(entrypoint, args); await flushThenExit(exitCode);

在 await 表达式中, 表达式 的值通常是一个 Future 对象;如果不是,那么这个值会自动转为 Future。这个 Future 对象表明了表达式应该返回一个对象。await 表达式 的值就是返回的一个对象。在对象可用之前,await 表达式将会一直处于暂停状态。

如果 await 没有起作用,请确认它是一个异步方法。比如,在你的 main() 函数里面使用await,main() 的函数体必须被 async 标记:

main() async { checkVersion(); print('In main: version is ${await lookUpVersion()}'); }

结合 streams 使用异步循环

一个异步循环具有以下形式:

await for (variable declaration in expression) { // Executes each time the stream emits a value. }

表达式 的值必须有Stream 类型(流类型)。执行过程如下:

在 stream 发出一个值之前等待

执行 for 循环的主体,把变量设置为发出的值。

重复 1 和 2,直到 Stream 关闭

如果要停止监听 stream ,你可以使用 break 或者 return 语句,跳出循环并取消来自 stream 的订阅 。

如果一个异步 for 循环没有正常运行,请确认它是一个异步方法。 比如,在应用的 main() 方法中使用异步的 for 循环时,main() 的方法体必须被 async 标记。

main() async { ... await for (var request in requestServer) { handleRequest(request); } ... }

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/82c011c5fbd719479ecf8402e9575707.html