我希望根据先前的呼叫是否被解决或拒绝来链接我的承诺 . 我在所有承诺中打电话给服务器 . 所以,我写的就像 -
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);
});
每当然后返回一个promise对象,问题是如果除了最后一个调用之外的任何promise都解析,则总是调用catch . 我想的一种方法是检查err是否为空并忽略它 . 这是正确的方法吗?
我正在使用请求模块,如果我永远设置:是的,我开始得到 -
{ [Error: socket hang up] code: 'ECONNRESET' }
永远是假的,它有效 . 为什么即使在请求结束后我的套接字仍然处于忙碌状态?由于下一个请求仅在调用reject时才会发生,因此socket应该是空闲的 .
1 回答
你应该只调用
callback
一次 . 在每个promise之后不要将它作为onfulfilled-handler传递,最后调用一次:要么
当然,你不应该
callback
参与return
承诺: