在 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中文网其他相关文章!