Promise构造函数还有一些值得探索的静态方法,所有的代码文件都存储在 code/promises/static-methods.js 中,我们列出一些值得注意的部分:
- Promise.resolve: 一种创建promise对象的快捷方式,并
resolve
一个给定的值:
function getData() {
return Promise.resolve('some data')
}
getData().then(d => console.log(d))
- Promise.reject: 一种创建promise对象的快捷方式,并
rejected
一个给定的值:
function rejectPromise() {
return Promise.reject(new Error('something went wrong'))
}
rejectPromise().catch(e => console.log(e))
- Promise.all:用来等待一些promise对象全部
resolve
:
const p1 = Promise.resolve('v1')
const p2 = Promise.resolve('v2')
const p3 = Promise.resolve('v3')
const all = Promise.all([p1, p2, p3])
all.then(values => console.log(values[0], values[1], values[2]))
注意,Promise.all
接受一个包含promise对象的数组,然后等待它们全部resolve
。这意味我们可以使用Promise.all
并行处理异步任务,处理完成后,Promise.all
会返回一个promise对象,这个对象中包含了所有的处理结果,每个结果都按照既定顺序存放在一个数组中。