首页 > web前端 > js教程 > 正文

如何处理不在 Promise 范围内的异步回调中的错误?

Mary-Kate Olsen
发布: 2024-10-26 10:06:02
原创
828 人浏览过

How Can You Handle Errors in Asynchronous Callbacks That Are Not Within a Promise's Scope?

使用 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 不会捕获不在其自身权限范围内的异步回调的异常,这一点至关重要。要处理这些类型的错误,请考虑:

  1. 使用 Promise.delay:Promise.delay 包装异步回调以返回 Promise。回调中抛出的任何错误都会被 Promise 捕获。
  2. 拒绝周围的 Promise:只要有可能,拒绝异步回调周围的 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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!