Angular Observable 等到它完成

标签 angular rest typescript http observable

我写了一个小 Angular 应用程序,我从 rest api 获取数据。为此,我正在使用可观察对象。我现在的问题是,它们是异步的。

let tempArray: boolean[] = [];
for (let i = 0; i < 3; i++) {
    this._myservice.checkData(data[i]).subscribe(
        result => {
            tempArray.push(result);
            console.log('Before');
            console.log(tempArray);
        },
            error => console.log(error),
    );
}
console.log('After');
console.log(tempArray);

我现在的问题是,订阅后结果数据不在目标数组中,如下图所示。如果不将整个代码写入订阅,我该如何解决这个问题?

enter image description here

最佳答案

您可以使用 forkJoin 运算符。它类似于 Promise.all 但用于可观察对象。

import { forkJoin } from 'rxjs/observable/forkJoin';

forkJoin(
  this._myservice.checkData(data[0]),
  this._myservice.checkData(data[1]),
  this._myservice.checkData(data[2])
).subscribe(result => {
  // result[0] is the first result
  // result[1] is the second result
  // result[2] is the third result
});

关于Angular Observable 等到它完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49730881/

相关文章:

Angular 6 : Create dynamic reactive form but got an Error: "formGroup expects a FormGroup instance. Please pass one in"

Angular 2 - 将变量传递给 ng-template

java - REST 服务和 Servlet

javascript - 原生 javascript 休息 api 调用

typescript - 有没有办法实现 <T>(x : Promise<AsyncIterableIterator<T>>): AsyncIterableIterator<T> in TypeScript?

reactjs - 如何在 typescript 中使用 react-navigation 的 withNavigation?

typescript - 如何在 TypeScript 的 Koa Debug模式下将自定义中间件函数记录到控制台?

javascript - header 问题中的 Ngx-datatable 过滤器

Javascript 数组元素消失

rest - Azure 站点恢复 - REST API、Powershell 和自动化