Promise 简介
Promise 对象用于表示一个异步操作的最终完成 (或失败)及其结果值。它能够把异步操作最终的成功返回值或者失败原因和相应的处理程序关联起来,这样使得异步方法可以像同步方法那样返回值:异步方法并不会立即返回最终的值,而是会返回一个 promise,以便在未来某个时候把值交给使用者。
Promise 常见的几种用法
首先定义几个 Promise 对象
const p1 = new Promise((resolve, reject) => {
setTimeout(resolve, 1000, 'promise-1');
});
const p2 = new Promise((resolve, reject) => {
setTimeout(reject, 2000, 'promise-2');
});
const p3 = new Promise((resolve, reject) => {
setTimeout(resolve, 3000, 'promise-3');
});
Promise 按顺序执行异步函数
p1.then((res) => {
console.log(res);
return p3;
}).then((res) => {
console.log(res);
});
Promise.resolve(),返回一个解析过的 Promise 对象
Promise.resolve("Success").then((res) => {
console.log(res);
}, (error) => {
});
Promise.reject(),返回一个被拒绝的 Promise 对象
Promise.reject(new Error('fail')).then(() => {
}, (error) => {
console.error(error);
});
Promise.all(),批量执行,等待所有都完成(或第一个失败)
Promise.all([p1, p2, p3]).then((res) => {
console.log(res);
}, (error) => {
console.log(error);
});
Promise.race(),返回第一个完成的结果(无论成功或是失败),如下:p2 更快,返回失败结果 ‘promise-2’
Promise.race([p2, p3]).then((res) => {
console.log(res);
}, (error) => {
console.log(error);
});
Promise.any() ,只要有一个成功,则返回成功的 Promise,没有一个成功,则返回一个失败的的 Promise
Promise.any([p1, p2, p3]).then((res) => {
console.log(res);
}, (error) => {
console.log(error);
});
|