[我想知道:如果我想发送多个获取请求,超过了最大浏览器并行请求支持,我可以并行发送所有请求吗?和浏览器会自动处理吗?或者我应该先将它们缩小到足够的大小并串起来。
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]). ...
如果您不想在所有提取都返回之前继续操作,那么只需使用Promise.all()
并让浏览器处理请求排队就值得了。一件好事是Promise.all()
将“快速失败”。这意味着除非您单独处理错误,否则一个失败的承诺将拒绝Promise.all()
。