你好,我想在一个for循环中调用我的http请求,因为我一次只想执行1000个项目。所以我有以下代码:
getData(IDs: string[]): Observable<any> {
// IDs is a large array of strings, about 3000 of them
const results = [];
const totalData = [];
// split the IDs array into chunks of 1000
while (IDs.length) {
results.push(IDs.splice(0, 1000));
}
// loop through the new array with the chunks of 1000 and run the http request
for (let i = 0; i < results.length; i++) {
const data = this.http.get(`myhttprequest/${results[i]}`);
totalData.push(data);
}
console.log(totalData);
// this is just an array of observables when I am looking for an array of data
return totalData
}
我没有收到任何错误,但是它没有返回数组数据,而是返回了一个可观察对象数组。
我知道它是因为变量在返回数据之前正在更新,所以我尝试使用promises,但是不幸的是我无法使它起作用。
有人可以帮助我获取此函数以返回数据而不是可观察值吗?
谢谢!
答案 0 :(得分:1)
始终订阅!
一个HttpClient方法在您调用之前不会开始其HTTP请求 该方法返回的observable上的subscription()。这是真的 用于所有HttpClient方法。
参考link。