← 全部文章

技术与生活 / 一篇记录

await 让代码像同步,但执行仍然异步

await 让异步代码更易读,但函数调用者仍然需要处理异步结果。

async 函数把返回值包装为 Promise,遇到 await 时把后续执行交还给异步调度。它改变的是表达方式,并不会让耗时操作失去延迟或失败的可能。

操作与观察

以下示例可在现代浏览器的开发者工具中观察;涉及 DOM 的代码需要在网页环境运行。

async function demo() { return 42; } demo().then(console.log);

直接打印 demo(),与等待结果后的值做比较。

先用一个返回固定值的函数理解返回类型,再加入可能拒绝的操作。不相关任务可以并发等待,但不要对有先后依赖的步骤盲目使用并行。

并发执行还需要考虑失败策略。Promise.all 会在某项拒绝后使组合结果拒绝,但不等于其他任务自动取消。需要收集全部结果时,应根据业务选择合适的组合方式。

别遗漏这条边界

不相关任务逐个 await 会失去原本可以并发执行的机会。

参考:JavaScript 文档。

搜索文章

输入关键词,找回一篇记录。