Promise API是一组用于操作Promise对象的方法集合,这些方法可以方便地处理Promise相关的异步操作,提高代码的可读性和可维护性。
一、Promise.resolve(value)
返回一个已经成功解析了value的Promise对象。
const promise = Promise.resolve(42);
promise.then(value => {
console.log(value);/输出:42
})
二、Promise.reject(reason)
返回一个已经失败了,原因为reason的Promise对象。
const promise = Promise.reject("Error");
promise.catch(reason => {
console.log(reason)//输出:Error
});
三、Promise.all(iterable)
接收一个可迭代对象,返回一个新的Promise对象,当所有Promise都成功时(状态都为resolved),该新Promise才会成功,并返回所有Promise结果组成的数组;如果其中任何一个Promise失败,则该新Promise将失败并返回第一个失败的Promise的错误信息。
const promises = [Promise.resolve(1),Promise.resolve(2),Promise.resolve(3)]
const promise = Promise.all(promises);
promise.then(values =>{
console.log(values);//[1,2,3]
})
四、Promise.any(iterable)
接收一个可迭代对象,返回一个新的Promise对象,当任意一个Promise成功时,该新Promise才会成功,并返回该Promise的结果;如果所有Promise均失败,则该新Promise将失败并返回所有Promise的错误信息组成的数组。
const promise1 = Promise.reject(0);
const promise2 = new Promise((resolve) => setTimeout(resolve, 100, 'quick'));
const promise3 = new Promise((resolve) => setTimeout(resolve, 500, 'slow'));
const promises = [promise1, promise2, promise3];
Promise.any(promises).then((value) => console.log(value)); //输出 "quick"
五、Promise.race(iterable)
接收一个可迭代对象,返回一个新的Promise对象,只要其中任意一个Promise状态改变(不论成功resolved或失败Rejected),该新Promise就会立即改变为相同的状态,并返回该Promise的值或错误信息。
const promises = [Promise.resolve(1),Promise.resolve(2),Promise.resolve(3)
const promise = Promise.race(promises);
promise.then(value =>{
console.1og(value);//出:1
});
六、Promise.prototype.then(onFulfilled,onRejected)
添加对Promise解析和拒绝的处理函数,并返回一个新的Promise对象用于链式调用。
const promise = new Promise((resolve,reject)=>{
resolve(42);
})
promise.then(value => {
console.1og(va1ue);//输出:42
return value*2;
}).then(value => {
console.1og(value);//输出:84
});
七、Promise.prototype.catch(onRejected)
添加对Promise拒绝的处理函数,并返回一个新的Promise对象用于链式调用。
const promise = new Promise((resolve,reject)=>{
reject("Error");
});
promise.catch(reason =>{
console.log(reason);//输出:Error
})
八、Promise.prototype.finally(onFinally)
添加一个最终处理函数,无论Promise是解析还是拒绝,都会执行该函数。该方法会返回一个新的Promise。
const promise new Promise((resolve,reject)=>{
resolve(42);
});
promise.finally(()=>{
console.log("Finally'");//输出:FinaLly
)