发送多个并行获取请求(超过最大浏览器支持)

Send many parallel fetch request (more than max browser support)

我想知道:如果我想发送多个获取请求,超过最大浏览器并行请求支持,我可以并行发送所有请求吗 浏览器会自动处理它们吗?或者我应该先把它们缩成足够大的束,然后把它们串起来。

Promise.all([allpromisses])

或任何其他解决方案,例如:

    function fetchAll(urls) {
        const requestPromises = urls.map(url => {
          return fetch(url).then(response => response.json());
        });
    
        requestPromises.reduce((chain, requestPromise) => {
          return chain.then(() => requestPromise)
            .then(data => data);
        }, Promise.resolve());
      }

getBunch([promises1]).then(getBunch([promises2]). ...

如果您不想在所有提取完成 return 之前继续,则值得使用 Promise.all() 并让浏览器处理请求排队。一件好事是 Promise.all() 将 "fail fast"。这意味着除非您单独处理错误,否则一个失败的承诺将拒绝 Promise.all().

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/all#Promise.all_fail-fast_behaviour