如何链接javascript承诺和错误
how to chain javascript promises and errors
假设:
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
处理程序,因此需要保留("传递")promise的值和状态,则需要。然而,即使你要这样做:
-
代替
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
相关文章:
- JavaScript承诺-无法读取属性'那么'的未定义
- JavaScript承诺的定义以及与事件的区别
- 当链接javascript承诺时,如何处理then()函数中的条件
- 对javascript承诺的后备支持
- 同步 Javascript 承诺超时以加班 Google 地理编码查询限制
- 执行一系列 Javascript 承诺一个接一个地解决
- 如何在恢复函数之前等待 JavaScript 承诺解析
- 用Javascript承诺包装同步代码有什么好处吗
- javascript承诺在循环中或如何逐个调用函数
- Javascript承诺:then()'s是't同步
- Javascript承诺-检索结果
- JavaScript承诺使用Mongoose
- javascript承诺和未来类似于C++
- Javascript承诺并更新变量
- Javascript承诺动态回调
- 具有JavaScript承诺的多个函数
- Javascript承诺:它们能在用户空间代码中完全实现吗
- 如何链接javascript承诺和错误
- Javascript-承诺保留为挂起状态
- 以处理错误的方式启动javascript承诺蓝鸟链