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

问题描述 投票:1回答:1

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

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]). ...
javascript ecmascript-6 browser es6-promise fetch-api
1个回答
1
投票

如果您不想在所有提取都返回之前继续操作,那么只需使用Promise.all()并让浏览器处理请求排队就值得了。一件好事是Promise.all()将“快速失败”。这意味着除非您单独处理错误,否则一个失败的承诺将拒绝Promise.all()

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

© www.soinside.com 2019 - 2024. All rights reserved.