在Angular 6中,你可以使用RxJS的forkJoin
操作符来对数组的每个元素进行2个API调用。以下是一个解决方法的示例代码:
首先,确保你已经导入了所需的依赖:
import { Observable, forkJoin } from 'rxjs';
import { HttpClient } from '@angular/common/http';
import { map } from 'rxjs/operators';
然后,创建一个服务或组件,并注入HttpClient:
constructor(private http: HttpClient) { }
接下来,创建一个函数来对数组的每个元素进行API调用。假设你有一个items
数组,其中包含要进行API调用的元素:
callApisForItems(items: any[]): Observable {
// 创建一个空数组来存储每个API调用的Observable
const observablesArray: Observable[] = [];
// 对每个数组元素进行循环
items.forEach(item => {
// 创建每个API调用的Observable,并将其推送到数组中
const apiCall1$ = this.http.get('api/url1/' + item.id);
const apiCall2$ = this.http.get('api/url2/' + item.id);
observablesArray.push(forkJoin([apiCall1$, apiCall2$]));
});
// 使用forkJoin操作符来合并所有的Observable,并返回一个新的Observable
return forkJoin(observablesArray);
}
最后,在你的组件或服务中调用这个函数:
this.callApisForItems(items).subscribe(results => {
// results是一个数组,包含每个API调用的结果
console.log(results);
});
这个示例代码将对items
数组中的每个元素进行2个API调用,并使用forkJoin
将所有的Observable合并为一个新的Observable。当所有的API调用都完成时,你将会收到一个包含每个API调用结果的数组。你可以根据需要进行结果的处理和操作。