我是异步等待和承诺的初学者。我读了很少的文章,看了很少的教程视频,但我仍然不能完全理解它。所以我现在正在研究一个代码
}).then(function() {
var responseArray = []
[url1,url2,url3,url4].forEach((url)=>{
makeRequest(url)
}).then((response)=>{
responseArray.push(response)
})
return responseArray
})
因此,正如预期的那样,
}).then(function() {
var responseArray = []
[url1,url2,url3,url4].forEach((url)=>{
async makeRequest(url)
}).then((response)=>{
await responseArray.push(response)
})
return responseArray
})
谁能帮我修一下这个?
您需要将请求映射到承诺数组,然后使用
.then(async () => {
const responseArray = await Promise.all(
[url1, url2, url3, url4].map(makeRequest)
);
})
这将并行执行所有请求(这通常是您想要的,除非您想限制带宽等)。
如果您想要按顺序执行它们,就需要对最佳方法进行大量讨论。
如果使用
}).then(async function() {
var arr = ['url1', 'url2', 'url3', 'url4'];
var responseArray = [];
for (url of arr) {
cont response = await makeRequest(url);
responseArray.push(response);
}
return responseArray;
});
或者,为了获得更好的性能,您可以使用Promise.all并行启动所有请求:
}).then(async function() {
var arr = ['url1', 'url2', 'url3', 'url4'];
var responseArray = await Promise.all(arr.map(function(url) {
return makeRequest(url);
}));
return responseArray;
});