我的代码中有多个链式的同步请求。我使用的是NodeJS包request-promise。
下面是一些伪代码,展示了它是如何格式化的:
initRequest.then(function(response){
return request2;
}).then(function(response2){
return request3;
}).then(function(response3){
return requestN;
}).catch(function(err){
log(error)
});
例如,如果request3失败,会发生什么情况?链条会继续,还是会完全脱离环路?
如果request2是一个POST,而request3失败了,有没有办法系统地回滚request2更改的数据?
谢谢。
发布于 2018-06-04 04:05:54
如果request3
失败,它将停止执行其余的请求链。
而且没有办法系统地回滚request2
所做的更改,您必须以自定义的方式实现它。
要在request3
失败时进行处理,请自行捕获request3
it。下面是一种处理request3
失败时的简单/迷你方法
initRequest.then(function(response){
return request2;
}).then(function(response2){
return request3.catch(function(err2){
//if something goes wrong do rollback
request2Rollback.then(rollbackRes => {
throw new Error("request3 failed! roll backed request 2!");
}).catch(function(err){
// the rollback itself has failed so do something serious here
throw err;
})
});;
}).then(function(response3){
return requestN;
}).catch(function(err){
log(error)
});
https://stackoverflow.com/questions/50669896
复制相似问题