同时发出多个API请求

  • 本文关键字:API 请求 javascript
  • 更新时间 :
  • 英文 :


我有这个代码,通过谷歌API返回一个网站的速度得分。由于有时值是不正确的,我在一个帖子上读到,这是一个很好的做法,使请求几次,然后使得分的中位数。如何同时发出多个Api请求?

我试过这样做

function medianSpeed() {
let values = [];
function call() {
return fetch(url)
.then((response) => response.json())
.then((json) => {
const speed = +json.lighthouseResult.categories.performance.score;
values.push(speed);
});
}
const promise1 = call(),
promise2 = call(),
promise3 = call();
const promises = [promise1, promise2, promise3];
Promise.allSettled(promises).then(() => {
return values;
});
}

现在的问题是如果我调用medianSpeed()代码不会等待Promise.allSettled的结束它直接返回undefined

InsidemedianSpeed()add return before call toPromise.allSettled():

return Promise.allSettled(promises).then(() => {
return values;
});

,当调用medianSpeed()时,计算.then()回调的中值:

medianSpeed().then(values=>calcMedian(values))

您的问题是medianSpeed没有返回承诺,所以没有什么可等待的。

如果你执行了return Promise.allSettled...,然后在调用函数:medianSpeed().then(values => {})之后执行了then块,那么你将获得返回的值。

我假设url变量来自其他地方?

最新更新