javascript - 异步循环 typescript 数组

标签 javascript angular typescript

我有一个 typescript 数组 this.products 我需要遍历数组的元素,并为每个元素将参数发送到 Angular 服务,该服务进行 API 调用并作为 Observable 获取对客户端的答复。但是,由于 Observable 的异步特性,我的循环在所有答案从服务器发回之前就结束了。 这是我的代码:

this.products.forEeach((ele, idx) => {
     this.myService.getSomeDetails(ele.prop1, ele.prop2).subscribe(result => {
         // do something with result 
     });   
});

我需要循环仅在每个可观察订阅完成后才前进。我该如何实现?谢谢。

最佳答案

你要找的是forkJoin:

https://rxjs-dev.firebaseapp.com/api/index/function/forkJoin

将项目数组映射到 api 调用可观察对象数组,并将它们传递到 forkJoin。这将发出所有已解析的 api 调用的数组。

快速而肮脏的例子:

forkJoin(this.products.map(i => this.myService.getSomeDetails(ele.prop1, ele.prop2))).subscribe(arrayOfApiCallResults => {
    // get results from arrayOfApiCallResults
})

关于javascript - 异步循环 typescript 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53866071/

相关文章:

javascript - 如何将文本放在图像上(JS)

angular - 展开运算符执行次数超过预期

angular - 如何在angular 2中将按钮添加到列到ng2-table

input - Angular 2将对象传递给组件

javascript - onClick window.location 上带有#anchor 的简单html 按钮不起作用

javascript - 从 chrome.tabs.onUpdated 获取以前的 url

javascript - 在 TinyMCE 中保存替换变量,但在可视化编辑器中显示替换内容

javascript - @Angular - 公共(public) block 在构建时获取延迟加载的内容

angular - 使用 Github 操作找不到 Azure 静态 Web 应用程序 : staticwebapp. config.json

typescript - 联合类型 : PartialRequired and PickRequired