node.js - 如何将交易系统构建到 .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 更改的数据?
谢谢。
解决方案
链条会继续,还是完全脱离循环?
它中断并继续到catch
or finally
proposal,它在最近的 Node.js 版本中可用,并且在旧版本中可以填充 - 类似于try..catch..finally
同步代码的工作方式(这也是将简单的 Promise 转换为async
函数的方式)。
如果 request2 是 POST,并且 request3 失败了,有没有办法系统地回滚 request2 更改的数据?
这应该由开发人员保护。如果有可能回滚数据,则应将必要的信息(数据条目 ID)保存到变量并回滚到catch
.
推荐阅读
- r - R: Creating a new column with desired alphabets
- python-3.x - Skipping a value in a range within a for loop
- bash - 如何从保存的 Bash 变量中运行 ESLint?
- css - Set equal vertical margins to any block element at once
- mysql - SQL查询即将发生的事件的日期更改
- .net - 应用程序性能 - 可能是由于大型对象堆上的分配过多
- r - 如何映射分类变量以在 R Plotly 中为 3D 散点图中的点轮廓着色?
- java - 如何从 Android 模拟器应用程序写入本地 PC 文件
- elasticsearch - Elasticsearch reindex api - 无法复制所有文档
- r - 为什么我在尝试发布到 shinyapps 时会看到此错误?