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