ES6 Promise.race() 方法详解与使用示例
作者:纸飞机时间:2026-10-30 23:33:02浏览:296
本文详解 ES6 中 Promise.race() 方法的用法。该方法接收多个 Promise 实例,并包装成一个新的 Promise。其核心特性是:只要传入的实例中有一个率先改变状态(成功或失败),新 Promise 的状态就会随之改变,并返回该实例的返回值。本文通过代码示例展示了其具体行为及注意事项。
Promise.race() 基本定义
Promise.race() 方法的作用是将多个 Promise 实例封装成一个新的 Promise 实例。
状态改变与返回值传递
const p = Promise.race([p1, p2, p3]);在上述代码中,只要 p1、p2 或 p3 中有一个实例率先改变状态,新 Promise p 的状态就会随之改变。那个率先改变的 Promise 实例的返回值,将直接传递给 p 的回调函数。
参数处理机制
Promise.race() 方法的参数处理方式与 Promise.all() 类似。如果传入的参数不是 Promise 实例,系统会先调用 Promise.resolve() 方法将其转换为 Promise 实例,然后再进行后续处理。
代码示例与输出结果
let x = 10;
let p1 = new Promise((resolve) => {
setTimeout(()=>resolve("p1 hello" + x),2000);
})
.then((res) => {
console.log(`p1 then 输出${res}`);
return res;
});
let p2 = new Promise((resolve) => {
setTimeout(()=> resolve("p2 hello" + x),2000);;
})
.then((res) => {
console.log(`p2 then 输出${res}`);
return res;
});
let p3 = new Promise((resolve) => {
setTimeout(()=>resolve("p3 hello" + x),2000);;
})
.then((res) => {
console.log(`p3 then 输出${res}`);
return res;
});
let p4 = new Promise((resolve) => {
setTimeout(()=>resolve("p4 hello" + x),2000);;
})
.then((res) => {
console.log(`p4 then 输出${res}`);
return res;
});
Promise.race([p1, p2, p3, p4])
.then(result => console.log(result))
.catch((e) => {
console.log("f*cking man 报错了");
console.log(e);
});最终输出结果中,仅会显示最先改变状态的那个 Promise 的返回值。
至此,关于 ES6 Promise.race() 用法的详细介绍已完毕。如需了解更多相关内容,建议查阅本站过往文章或继续浏览后续文章,感谢大家的支持!
作者最新文章
JS动态构建复杂嵌套JSON对象的方法
2026-11-05 15:41:52
JS负数取余为什么是负数?详解余数与模运算区别
2026-11-05 13:34:41
JS 解压出现乱码或报错怎么解决?
2026-11-05 12:32:38
JS 中 startsWith、indexOf 与正则判断字符串前缀的对比
2026-11-04 22:19:43
JS解析Excel后怎么将数据转换为JSON格式
2026-11-04 20:58:28
