我写了一个小 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);
我现在的问题是,订阅后结果数据不在目标数组中,如下图所示。如果不将整个代码写入订阅,我该如何解决这个问题?
最佳答案
您可以使用 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/