首页 > 解决方案 > 如何将交易系统构建到 .then() 链中?

问题描述

我的代码中有多个链接的同步请求。我正在使用 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 更改的数据?

谢谢。

标签: node.jspromiserequestrequest-promise

解决方案


链条会继续,还是完全脱离循环?

它中断并继续到catchor finallyproposal,它在最近的 Node.js 版本中可用,并且在旧版本中可以填充 - 类似于try..catch..finally同步代码的工作方式(这也是将简单的 Promise 转换为async函数的方式)。

如果 request2 是 POST,并且 request3 失败了,有没有办法系统地回滚 request2 更改的数据?

这应该由开发人员保护。如果有可能回滚数据,则应将必要的信息(数据条目 ID)保存到变量并回滚到catch.


推荐阅读