假设有三个网络请求 A、B 和 C,它们的返回值分别为 “A”、”B” 和 “C”,但由于网络延迟的原因,它们的返回顺序是不确定的。请使用 Promise.race() 实现一个函数,它在接收到任意一个请求的返回值后就停止所有请求并返回该值。
回答:
使用 Promise.race 这个API,把所有网络请求 Promisify 之后都放入到一个数组当中,传递给 Promise.race。
当其中有任意一个请求返回后, Promise.race 就会返回该请求返回的 Promise 对象,再通过调用 .then() 方法就可以获取到返回结果了。
例如说:
function test() {
Promise.race([
fetch('https://api.example.com/A'),
fetch('https://api.example.com/B'),
fetch('https://api.example.com/C')
]).then(res => {
console.log(res.result)
});
}
