我正在尝试发出并行访存/ http.get请求,但是我不能异步执行此操作(大约有400个http get调用)。 在发出这些请求时,我的浏览器冻结了。 所以我想使调用异步,以便不等待功能完成
我尝试使用异步,但无法使其异步
async cacheNext(){
console.log("Caching Images")
this.cacheImages(imagearray)
console.log("Cached Images")
}
}
async cacheImages(imagearray){
imagearray.forEach(img => {
fetch(img)
});
}
OR
async cacheImages(imagearray){
imagearray.forEach(img => {
this.http.get(img).toPromise()
});
}
我希望cacheImages函数能够运行,但是cacheNext完成
答案 0 :(得分:1)
正如其他人所评论的那样,如果您进行400个http调用,则可能存在设计/体系结构问题。
此外,要进行多个并行的http调用,并获得包含所有结果的单个回调,我建议使用rxjs和forkJoin。
如果您正在进行Angular开发,那么学习和熟悉rxjs可能是您的最大利益,因为很多框架都建立在该框架上。在我看来,将所有内容转换为Promises只是多余的,不必要的工作。
Rxjs擅长处理涉及多个异步调用和其他复杂异步问题的情况。根据我的经验,这些复杂的情况很难用诺言处理。