javascript - 如何在for循环中使用angular http rest api保证顺序?

标签 javascript angular rest api

我正在尝试创建一个允许您按顺序创建多个资源的表单。

下面的例子

Floor 1
Floor 2
Floor 3
...
Floor 9

代码的问题是不能保证顺序。

下面是我的代码

let startAt = this.addAreasForm.controls['startAt'].value
const name = this.addAreasForm.controls['name'].value
const newArea = {name: name}

for (let i = 1; i < (amount + 1); i++) {
  newArea.name = name + ' ' + startAt
  startAt++
  this.areasService.createArea(newArea, parentId)
    .subscribe(
      area => this.added.emit(area)
    )
}

可以回来点赞

Floor 2
Floor 3
Floor 1
Floor 5
Floor 4

您如何处理异步 API 调用以保证顺序?

最佳答案

您可以将 async/await 用于 Promise resolve 的目的:

for (let i = 1; i < (amount + 1); i++) {
    await new Promise(resolve => {
        newArea.name = name + ' ' + startAt
        startAt++
        this.areasService.createArea(newArea, parentId)
            .subscribe(
                area => { 
                    this.added.emit(area);
                    resolve();
                });
        });
}

请记住将 async 放在您的函数之前。看这个demo on StackBlitz .

关于javascript - 如何在for循环中使用angular http rest api保证顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45737232/

相关文章:

javascript - 无法使用 Protractor 选择组件按钮

java - Spring Rest 服务中的可选请求 header

java - 泽西网络服务。出现 404 错误

angular - 如何从指令访问主机组件?

rest - 使用 Office 365 REST API OAuth access_token 时出现 SharePoint 错误

javascript - 动态更改背景图像

javascript - @ 用于处理 vue js 中的 Assets 不起作用

javascript - Vue-Router:页面刷新后 View 返回登录页面

javascript - 更新属性无法正常工作 Meteor/MongoDB

angular - 如果从父级重新初始化 FormGroup,则自定义组件 FormControl 会中断