【问题标题】:How to make multiple async parallel fetch calls in angular and not wait for response如何以角度进行多个异步并行获取调用而不等待响应
【发布时间】:2019-11-18 11:49:22
【问题描述】:

我正在尝试进行并行 fetch/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 完成

【问题讨论】:

  • 如果您发出 400 个获取请求,您在某处做出了一些糟糕的设计决策,需要重新架构您的应用程序。

标签: angular typescript promise async-await observable


【解决方案1】:

正如其他人评论的那样,如果您进行 400 次 http 调用,则可能存在设计/架构问题。

除此之外,要进行多个并行 http 调用并获得包含所有结果的单个回调,我建议使用 rxjs 和 forkJoin。

如果您正在进行 Angular 开发,学习并熟悉 rxjs 可能对您最有利,因为大部分框架都是基于它构建的。将所有内容都转换为 Promise 在我看来只是额外的、不必要的工作。

Rxjs 擅长处理涉及多个异步调用和其他复杂异步问题的情况。根据我的经验,这些复杂的情况用 Promise 处理起来要困难得多。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-11
    • 2021-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-27
    相关资源
    最近更新 更多