f1() {
//API CALL
console.log('f1');
}
f2() {
console.log('f2');
for(i=0 ;i<=n; i++){
}
}
我有两个职能。我希望这两个可以互相帮助。在这里,我在函数2中有一个for循环。此for循环将使用函数1的API调用中的数据。因此,我想使用Observable逐一运行这两个函数。我想知道一种基本的方法,该方法如何创建一个可观察对象并对其进行订阅,以使这两个依赖函数可以一个接一个地运行。
apiParam: any = ['posts', 'albums', 'comments', 'photos', 'users'];
getObs() {
const apiRoot = 'https://jsonplaceholder.typicode.com/';
const urls = [];
for (let i = 0; i < this.apiParam.length; i++) {
urls.push(apiRoot + this.apiParam[i]);
// const url = apiRoot + this.apiParam[i];
}
of(...urls).pipe(
concatMap((url: string) => this.getHTTP.getData(url)))
.subscribe((result) => {
this.resultArray.push(result);
console.log('this.resultArray', this.resultArray);
});
}
这是我使用过API调用的函数 现在我想使用for循环并使用this.resultArray这个数据。 像这样
for (let index = 0; index < this.resultArray.length; index++) {
console.log(this.apiParam[index]);
this.finalObject = { [this.apiParam[index]]: this.resultArray[index]
};
this.finalArray.push(this.finalObject);
}
console.log('========this.finalArray============================');
console.log(this.finalArray);
console.log('====================================');
但是每当我这样做时,for循环首先运行,然后再获取finalArray。 请帮我
答案 0 :(得分:0)
您可以简单地将第一个调用链接到第二个调用(在组件内部):
constructor(private http: HttpClient) {}
first() {
console.log('API called!');
}
second(data) {
for (let item of data) {
...
}
}
apiCall() {
this.http.get(someURL).subscribe(
(data) => {
this.first();
this.second(data);
}
);
}