javascript - 在循环内触发同步调用 等待两个 api 调用成功然后下一次迭代需要以角度 6 开始
问题描述
尝试使用以下代码在响应到来之前不要等待调用后成功跳转到下一次迭代。要求:需要在两次api(POST/PATCH)调用成功后进行下一次迭代
for (item of data) {
A(item)
}
A(value) {
const resp = this.post(url, {
'rationale': value['rationale']
})
.mergeMap(tempObj => {
value['detail'] = tempObj['id']
return this.patch(url, value['extid'], value)
})
.subscribe()
}
解决方案
最近我使用了toPromise
angular http 的函数来将 observable 变成 promise。如果您在异步函数中有外部循环,这可能会起作用:
// This must be executed inside an async function
for (item of data) {
await A(item)
}
async A(value) {
const resp = await this.post(url, {
'rationale': value['rationale']
})
.mergeMap(tempObj => {
value['detail'] = tempObj['id']
return this.patch(url, value['extid'], value)
}).toPromise();
}
推荐阅读
- css - Bootstrap 5 单选按钮更改 NET Core 中的背景颜色
- javascript - 使用 Regex 通过 Discord.js 定义变量?
- python - 如何在嵌套字典中选择元素并递归删除它们
- javascript - 使用 gatsby 和 react pdf 导入 PDF,返回错误
- html - 放大太远时 box-shadow 消失
- python-3.x - AWS 读取 utf-8 文件 pycaption.detect_format 返回 None
- google-cloud-platform - 尝试协调/刷新 terraform 基础设施漂移
- .net - 如何在 .net 核心应用程序中使用 powershell 启动 Windows 服务?
- typescript - 如何定义具有键类型和值类型之间相关性的 Map,而它们都是联合
- javascript - 无法检测在画布 javascript 中绘制的对象的碰撞