【发布时间】:2017-03-29 09:23:57
【问题描述】:
我想根据上一个电话是解决还是拒绝来链接我的承诺。我在所有承诺中都打电话给服务器。 所以,我是这样写的-
apiServices.patientsSearch(id)
.then(function(data){
return callback(null,data);
},function(err){
return apiServices.studiesSearch(id);
}).then(function(data){
return callback(null,data);
},function(){
return apiServices.seriesSearch(id);
}).then(function(data){
return callback(null,data);
})
.catch(function(err){
return callback(false,err);
});
由于every then 返回一个promise 对象,问题是如果除了最后一个promise 之外的任何promise 调用resolve,catch 总是被调用。我在想的一种方法是检查 err 是否为空并忽略它。这是正确的做法吗?
我正在使用请求模块,如果我设置永远:true,我开始获取-
{ [Error: socket hang up] code: 'ECONNRESET' }
永远为假,它可以工作。为什么我的套接字在请求结束后仍然很忙?由于下一个请求只有在调用拒绝时才会进行,所以到那时套接字应该是空闲的。
【问题讨论】:
-
什么是
callback(null, data)? -
@Bergi 回调函数将数据传递给控制器,出现错误或结果。
-
我不明白
that catch is always being called if any promise except the last one calls resolve。你能再解释一下吗? -
"如果除最后一个承诺之外的任何承诺调用解决,则始终调用catch。" 对我来说毫无意义。
catch回调仅在最后两个callback(null, data)或apiServices.seriesSearch(id)之一被拒绝时调用。 -
@krrish 我认为您不应该多次致电
callback?
标签: javascript promise npm-request