认为:
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);
需要吗?
是报表
return Promise.resolve(p1res);
和return Promise.reject(err);
需要?
是的,如果您计划then
从这些处理程序中链接其他处理程序,因此需要保留(“传递”)承诺的价值和状态,则需要此方法或等效方法。但是,即使您要这样做:
取而代之的是,return Promise.resolve(p1res);
它变得更加简单和等效return p1res;
。
与其说return Promise.reject(err);
是简单易懂,还不如说是throw err;
,继续使用“原因”在错误路径上继续承诺err
。
但是,如果您的目标只是拥有一个处理程序来记录状态,则无需(也可能不想)从那里链接后续处理程序,因为这将使您费时费力才能确保状态报告处理程序返回值或重新抛出错误,以利于下游处理程序。相反,您可以将状态报告处理程序放在单独的“分支”上,而不用担心它们返回或传递的内容:
function f() {
let result = p1();
result . then(
function(p1res) { console.log('p1 ok'); },
function(err) { console.log('p1 err ', err); });
result . then(
...proceed
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句