ES6 Promise.race的用法详解
Promise.race()方法同样是将多个 Promise 实例,包装成一个新的 Promise 实例。
const p = Promise.race([p1, p2, p3]);
上面代码中,只要p1、p2、p3之中有一个实例率先改变状态,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的用法详解的文章就介绍到这了,更多相关ES6 Promise.race用法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
jQuery 表单验证插件formValidation实现个性化错误提示
这里介绍另外一个表单验证插件formValidation,这个插件与前面两个插件的最大区别在于它实现了个性化的错误提示信息,显示在表单元素右上角类似于提示条2009-06-06仅IE不支持setTimeout/setInterval函数的第三个以上参数
setTimeout/setInterval,这两个函数相信前端开发同学都很熟悉。它们在非IE(6-9)浏览器中还可以如下使用2011-05-05
最新评论