写作原因
理解ES6新增对象promise的方法promise.race()
使用场景
Promise.race()方法是将多个 Promise 实例,包装成一个新的 Promise 实例。
const p = Promise.race([p1, p2, p3]);
上面代码中,只要p1、p2、p3之中有一个实例率先改变状态,p的状态就跟着改变。那个率先改变的 Promise 实例的返回值,就传递给p的回调函数。
Promise.race()方法的参数如果不是 Promise 实例,就会先调用下面讲到的Promise.resolve()方法,将参数转为 Promise 实例,再进一步处理。
下面是一个例子,如果指定时间内没有获得结果,就将 Promise 的状态变为reject,否则变为resolve。
function delayFn(delay = 500) {
return new Promise(function (resolve, reject) {
setTimeout(function () {
reject()
}, delay)
})
}
var p = new Promise.race([delayFn()/* 另一个方法 */])
p.then(function (res) {
console.log(res);
}).catch(function (err) {
throw err;
})