Promise静态四兄弟实现示例详解
Promise静态四兄弟
在ES6中,Promise是一种用于异步编程的解决方案。Promise有两个状态:pending
(等待)、fulfilled
(已成功)和rejected
(已失败)。一旦Promise状态改变为fulfilled
或rejected
,它就变成了不可变的。Promise有一些静态方法,其中四个方法称为“Promise静态四兄弟”。它们是Promise.all
、Promise.race
、Promise.resolve
和Promise.reject
。
Promise.all
Promise.all
方法接受一个Promise数组作为参数。当所有Promise都被成功执行后,返回一个由所有返回值组成的数组。如果其中有一个Promise失败了,则返回失败的Promise。以下是Promise.all
方法的代码示例:
const p1 = new Promise(resolve => setTimeout(resolve, 1000, 'foo'));
const p2 = new Promise(resolve => setTimeout(resolve, 2000, 'bar'));
const p3 = new Promise(resolve => setTimeout(resolve, 3000, 'baz'));
const promiseAll = Promise.all([p1, p2, p3]);
promiseAll.then(values => console.log(values)); // ['foo', 'bar', 'baz']
Promise.race
Promise.race
方法接受Promise数组作为参数,返回最先fulfilled或rejected的Promise的值。以下是Promise.race
方法的代码示例:
const p1 = new Promise(resolve => setTimeout(resolve, 1000, 'foo'));
const p2 = new Promise(resolve => setTimeout(resolve, 2000, 'bar'));
const p3 = new Promise((resolve, reject) => setTimeout(reject, 3000, new Error('baz')));
const promiseRace = Promise.race([p1, p2, p3]);
promiseRace
.then(result => console.log(result)) // 'foo'
.catch(err => console.error(err.message)); // 'baz'
Promise.resolve
Promise.resolve
方法用于将一个对象或值转换为一个成功的Promise,如下:
const p = Promise.resolve('foo');
p.then(result => console.log(result)); // 'foo'
Promise.reject
Promise.reject
方法用于将一个错误对象转换成一个失败的Promise,如下:
const p = Promise.reject(new Error('bar'));
p.catch(error => console.error(error.message)); // 'bar'
以上代码示例,希望对你理解Promise静态四兄弟有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Promise静态四兄弟实现示例详解 - Python技术站