首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何将事务系统构建到.then()链中?

如何将事务系统构建到.then()链中?
EN

Stack Overflow用户
提问于 2018-06-04 02:56:47
回答 1查看 113关注 0票数 1

我的代码中有多个链式的同步请求。我使用的是NodeJS包request-promise。

下面是一些伪代码,展示了它是如何格式化的:

代码语言:javascript
复制
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更改的数据?

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2018-06-04 04:05:54

如果request3失败,它将停止执行其余的请求链。

而且没有办法系统地回滚request2所做的更改,您必须以自定义的方式实现它。

要在request3失败时进行处理,请自行捕获request3 it。下面是一种处理request3失败时的简单/迷你方法

代码语言:javascript
复制
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)
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50669896

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档