并行 Promise.all()
var promise1 = Promise.resolve(3);
var promise2 = 42;
var promise3 = new Promise(function(resolve, reject) {
setTimeout(resolve, 100, 'foo');
});
Promise.all([promise1, promise2, promise3]).then(function(values) {
console.log(values);
});
// expected output: Array [3, 42, "foo"]
竞争 Promise.race()
var promise1 = new Promise(function(resolve, reject) {
setTimeout(resolve, 500, 'one');
});
var promise2 = new Promise(function(resolve, reject) {
setTimeout(resolve, 100, 'two');
});
Promise.race([promise1, promise2]).then(function(value) {
console.log(value);
// Both resolve, but promise2 is faster
});
// expected output: "two"
Promise.reject()
function resolved(result) {
console.log('Resolved');
}
function rejected(result) {
console.log(result);
}
Promise.reject(new Error('fail')).then(resolved, rejected);
// expected output: Error: fail
Promise.resolve()
var promise1 = Promise.resolve([1, 2, 3]);
promise1.then(function(value) {
console.log(value);
// expected output: Array [1, 2, 3]
});