JS异步堆栈追踪之为什么await胜过Promise
概述async/await和Promise的根本区别在于await fn()暂停当前函数的执行,而promise.then在将fn调用添加到回调链后,继续执行当前函数。在堆栈追踪的上下文中,这种差异非常显著。当一个Promise链在任何时候抛出一个未经处理的异常时,JavaScript引擎都会显示一条错误信息和(希望)记录一个有用的堆栈追踪。作为一名开发人员,无论您使用的是普通的Promise还是async await,您都会期望这样。Promise想象一个场景,当对异步函数b的调用解析时,调用函数c:当调用a时,将同步发生以下情况:。之后,我们完成了在函数a的主体中执行代码。捕获堆栈追踪需要时间;存储这些堆栈追踪需要内存。这是可能的,因为a被挂起,正在等待b解决。通过遵循以下建议,使 JavaScript 引擎能够以更高效的方式处理堆栈追踪:
用户评论