在前端开发中,调试是一个非常重要的环节,而错误追踪则是调试中最为关键的一个环节。因为一旦代码出现了错误,如果无法快速找到错误原因,将会浪费大量的时间和精力。ES9 中新增的 async stack traces 功能,可以帮助开发人员更快速地找到错误原因。
async stack traces
在 ES9 中,当代码出现异常时,错误调用栈中将包含异步函数的信息,即 async stack traces。这个功能非常重要,因为在使用异步函数时,错误信息通常会淹没在回调嵌套中,而 async stack traces 可以展示每个异步调用的位置,简化错误追踪的过程。
下面是一个简单的示例,展示了如何利用 async stack traces 进行错误追踪。
-- -------------------- ---- ------- ----- -------- ----- - ----- --- -------- - ----- -------- ----- - ----- ------ - ----- -------- ----- - ----- ------ - ----- -------- ------ - --- - ----- ------ - ----- ------- - --------------------- - - -------
上面的代码中,main 函数调用了 baz 函数,而 baz 函数调用了 bar 函数,bar 函数又调用了 foo 函数,最终 foo 函数抛出了一个错误。如果没有 async stack traces,我们只能得到一个简单的错误信息,无法知道错误是在 foo 函数中发生的。但有了 async stack traces,我们可以得到更多的信息,如下所示:
-- -------------------- ---- ------- ----- -- --- -------------- -- --- --------------- -- --- ---------------- -- ---- --------------- -- ------------------ --------------- -- --------------- ---------------------------------------- -- ----------------------------- ---------------------------------------- -- ----------- --------------------------------------- -- --------------------- --------------------------------------- -- ------------------------------ --- -------- ------------------------------------
我们可以从这个调用栈中看到每个异步函数的位置,从而更加容易地追踪错误。
如何使用 async stack traces
虽然 async stack traces 可以帮助我们快速追踪错误,但它并不是默认开启的。如果要使用 async stack traces,需要在 node.js 的环境变量中设置 NODE_OPTIONS="--async-stack-traces",或者在 chrome 浏览器中使用以下代码开启:
Error.stackTraceLimit = Infinity; Error.prepareStackTrace = (error, stackTrace) => stackTrace;
值得注意的是,虽然 async stack traces 可以帮助我们快速追踪错误,但也有可能会导致一些性能问题。因此,建议只在调试模式下开启 async stack traces。
总结
ES9 中新增的 async stack traces 功能可以帮助我们更快地追踪异步代码中的错误,从而提高开发效率。虽然使用起来非常简单,但开发人员需要注意,它只适用于调试模式,不建议在生产环境中使用。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/65a78a01add4f0e0ff0aca17