不设陷阱的 async/ await

2026年9月2日1 次浏览来源:Dev.to阅读原文

async/await without the bell's Async/await 是现代JavaScript的面包和黄油.

它使一个同步代码看起来是同步的,这对可读性来说是巨大的.

但是,它有它自己的一套脚枪 可以咬你的生产。

这是如何避免他们。

陷阱一:循环忘却 你可能会写这样的东西,期待每个请求在下次开始前完成: 没错 当您忘记了内幕或内幕时就会出现问题:函数总是返回承诺。

所以如果你用Aync回调, 你得到一系列的承诺。

要修复它,请使用:但要小心:失败快.

如果有一个请求失败,整个事情就拒绝了.

如果您需要单独处理失败, 请使用 。

陷阱2:悄悄地吞噬错误 一个常见的错误就是捕捉出一个错误而无所事事,这使得调试成为了一场噩梦: 总是至少登录错误 。

更好的是,优雅地处理它 或者重放它: 如果你在使用,不处理的承诺拒绝 可能会在Node.js崩溃你的应用程序。

总是有捕捉或全球处理者。

坑道 3: 当您需要平行执行时顺序执行 使用循环中使请求逐一运行 。

如果他们是独立的,那就是表演打击:但不要过份.

并行请求可以超过服务器或命中速率限制.

一个很好的中间点是用块块来批量它们。

Pitchfall 4:在不需要的时候使用,如果一个功能没有内在,使得它没有必要,并且可以引起微妙的问题: 它也改变错误处理.

如果你在同步函数内抛出,它就会变成一个被拒绝的承诺,而不是同步例外.

只是当你真的有东西的时候 坑道5:忽略取消 Async/await没有内置取消.

如果您开始抓取, 而用户会导航离开, 您可能还会更新用户界面或泄露资源 。

一个简单的模式是使用: 对于更复杂的情景,像存在这样的库,但有时一个简单的旗下作品:Pitfall 6:忘记阻挡事件回路不会阻碍事件回路,但它确实暂停了功能.

如果在主动函数内有一个长期运行的同步操作,它会屏蔽其他一切.

对于CPU重任务,使用或工人线程产生控制.

最后提示 总是利用或履行你创造的每一个承诺。

优先处理部分故障。

用来暂停,但要小心 不处理的拒绝 从失去的承诺。

用规则将你的代码固定在缺失处(如ESLint).

Async/await是一个强大的工具,但不是魔法.

了解这些陷阱, 你会写一个更强健的同步代码。

编码愉快!

分享