Please note, this is a STATIC archive of website developer.mozilla.org from November 2016, cach3.com does not collect or store any user information, there is no "phishing" involved.

Promise.race()

该特性处于 ECMAScript 6 规范草案中,目前的实现在未来可能会发生微调,请谨慎使用。

概述

Promise.race(iterable)方法返回一个promise,这个promise在iterable中的任意一个promise被解决或拒绝后,立刻以相同的解决值被解决或以相同的拒绝原因被拒绝

语法

Promise.race(iterable);

参数

iterable
一个可迭代对象,例如Array。参见iterable.

描述

race 函数返回一个Promise,这个Promise根据传入的Promise中的第一个确定状态--不管是接受还是拒绝--的状态而确定状态。

示例

使用Promise.race – 使用setTimeout的示例

var p1 = new Promise(function(resolve, reject) { 
    setTimeout(resolve, 500, "一"); 
});
var p2 = new Promise(function(resolve, reject) { 
    setTimeout(resolve, 100, "二"); 
});

Promise.race([p1, p2]).then(function(value) {
  console.log(value); // "二"
  // 两个都解决,但p2更快
});

var p3 = new Promise(function(resolve, reject) { 
    setTimeout(resolve, 100, "三");
});
var p4 = new Promise(function(resolve, reject) { 
    setTimeout(reject, 500, "四"); 
});

Promise.race([p3, p4]).then(function(value) {
  console.log(value); // "三"
  // p3更快,所以被解决(resolve)了              
}, function(reason) {
  // 未被执行
});

var p5 = new Promise(function(resolve, reject) { 
    setTimeout(resolve, 500, "五"); 
});
var p6 = new Promise(function(resolve, reject) { 
    setTimeout(reject, 100, "六");
});

Promise.race([p5, p6]).then(function(value) {
  // 未被执行             
}, function(reason) {
  console.log(reason); // "六"
  // p6更快,所以被拒绝(reject了)
});

规范

规范 状态 备注
domenic/promises-unwrapping 草稿 标准化工作正在这里进行
ECMAScript 6 (ECMA-262)
Promise.race
Release Candidate ECMA标准的首次定义

浏览器兼容性

Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari
Basic support 32 29.0 (29.0) 未实现 19 7.1
Feature Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile Chrome for Android
Basic support 未实现 29.0 (29.0) 未实现 未实现 iOS 8 32

参见

文档标签和贡献者

 此页面的贡献者: fskuok
 最后编辑者: fskuok,