gpt4 book ai didi

javascript - 如何链接 javascript 的 promise 和错误

转载 作者:行者123 更新时间:2023-12-03 07:17:34 24 4
gpt4 key购买 nike

假设:

function f() {
return p1()
.then(function(p1res) {
console.log('p1 ok');
return Promise.resolve(p1res);
}, function(err) {
console.log('p1 err '+err);
return Promise.reject(err);

}).then( ... proceed

是陈述

return Promise.resolve(p1res);

return Promise.reject(err);

需要吗?

最佳答案

Are the statements return Promise.resolve(p1res); and return Promise.reject(err); needed?

是的,如果您计划从这些处理程序中链接额外的 then 处理程序,因此需要保留(“传递”)该值和 promise 的状态。但是,即使您打算这样做:

  1. 代替 return Promise.resolve(p1res); 会更简单,相当于直接说 return p1res;

  2. 代替 return Promise.reject(err); 会更简单,相当于直接说 throw err; 来继续对错误的 promise 带有“原因”err 的路径。

但是,如果您的目标仅仅是让处理程序记录状态,则您不需要,也可能不想从那里链接后续处理程序,因为这将需要您付出额外的努力来确保为了下游处理程序的利益,状态报告处理程序返回值或重新抛出错误。相反,您可以将状态报告处理程序放在单独的“分支”上,而不用担心它们返回或传递的内容:

function f() {
let result = p1();

result . then(
function(p1res) { console.log('p1 ok'); },
function(err) { console.log('p1 err ', err); });

result . then(
...proceed

关于javascript - 如何链接 javascript 的 promise 和错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36353821/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com