【问题标题】:Using Javascript Web Worker and Async together?一起使用 Javascript Web Worker 和 Async?
【发布时间】:2021-02-10 20:08:10
【问题描述】:

是否有人同时使用 Web Worker 和 Async,或者有人投票反对?

例如,如果我想发出 1000 个异步调用并等待它们完成,它是同步的,所以它很慢。虽然不阻塞主线程,但是一一做await很慢。

我可以等待一个异步方法创建 1000 个 Web Worker 并并行发送 1000 个 fetch (每个 worker 一个 fetch)。每个 web worker 将等待获取结果并返回结果。在创建 1000 个 Web Workers 的主要异步方法上,它收集了所有 1000 个结果。完成后,它会完成该方法并且主线程将从那里继续?

我没有看到那里的例子。我想知道为什么。这是一个坏主意吗?或者也许有一个框架?

谢谢

【问题讨论】:

    标签: javascript async-await web-worker


    【解决方案1】:

    你不需要工人,因为fetch 不会阻塞主线程。除此之外,还会有很大的开销。

    fetch 默认情况下已经做了你想做的事,你不应该等待每一个电话。

    您可以使用Promise.allSettled 将一组promise 转换为单个promise 的结果,然后您可以await

    const promises = urls.map(url => fetch(url));
    const results = await Promise.allSettled(promises);
    

    【讨论】:

      猜你喜欢
      • 2020-04-24
      • 2020-03-15
      • 2019-07-27
      • 2013-01-15
      • 2017-04-28
      • 1970-01-01
      • 2018-09-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多