使用 Promise 链进行异步错误处理
使用异步代码时,考虑如何有效处理错误至关重要。未捕获的异常可能会使您的应用程序崩溃,因此制定适当的策略非常重要。
在所描述的场景中,使用抛出错误的 setTimeout 创建 Promise。 Bluebird Promise 的 catch 处理程序不会捕获此错误,因为它发生在异步回调中。
Promises 中的异常处理
Promises 可以捕获在其中抛出的异常他们自己的回调函数。要处理此类错误,您可以:
<code class="javascript">function getPromise() { return new Promise(function(done, reject) { setTimeout(done, 500); }).then(function() { console.log("hihihihi"); throw new Error("Oh no!"); }); }</code>
这里,错误在 then 回调中抛出,这确保它会被 Promise 的 catch 处理程序捕获。
异步回调的注意事项
记住 Promise 不会捕获不在其自身权限范围内的异步回调的异常,这一点至关重要。要处理这些类型的错误,请考虑:
流氓异步回调的处理示例
要在 Node.js 或浏览器中处理流氓异步回调,您可以使用以下方法:
<code class="javascript">function getPromise() { return new Promise(function(done, reject) { setTimeout(function() { try { // Your rogue async callback here console.log("hihihihi"); } catch (e) { reject(e); } }, 500); }); }</code>
通过手动处理回调中的任何异常,此方法可确保它们不会使您的应用程序崩溃。
以上是如何处理不在 Promise 范围内的异步回调中的错误?的详细内容。更多信息请关注PHP中文网其他相关文章!