首页 >web前端 >js教程 >链式 Promise 如何处理和传播拒绝?

链式 Promise 如何处理和传播拒绝?

Linda Hamilton
Linda Hamilton原创
2024-12-09 07:11:07981浏览

How Do Chained Promises Handle and Propagate Rejections?

链式 Promise 未通过拒绝

在 Promise 链中,Promise 的解析取决于其错误处理函数如何响应拒绝。 .then() 方法为回调函数的结果返回一个新的 Promise。如果没有提供成功或错误处理程序,结果将直接传递给下一个 Promise。

如果处理了错误,则生成的 Promise 将使用错误处理程序的返回值来实现。要重新抛出错误并将其沿着链传播,请改为抛出 err。

在小部件商店示例中,当链中的 Promise 收到错误时,它应该向前抛出该错误,以确保后续的 Promise该链不会收到成功值。

在数据库查询链中,如果第一个查询中发生错误,省略错误处理程序将允许链继续,即使后续的 Promise 可能不会收到

db.query({ parent_id: value }).then(function(query_result) {
    return db.put({
        parent_id: query_result[0].parent_id
    });
}).then(function(first_value_result) {
    return db.put({
        reference_to_first_value_id: first_value_result.id
    });
}.then(values_successfully_entered);

总之,为了防止链中的后续 Promise 在发生拒绝后接收成功值,错误处理函数应该抛出错误或返回被拒绝的 Promise。

以上是链式 Promise 如何处理和传播拒绝?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn