【JS基础】Promise.resolve()
Promise.resolve 静态方法将给定值“解析”为 Promise。
如果值是 Promise,则返回该 Promise;如果值是 thenable,返回的 Promise 会“跟随”这个 thanable 的对象,采用它的最终状态;否则,返回的 promise 将以此值完成。
此函数将类 promise 对象的多层嵌套展平。
注意:不要在解析为自身的 thenable 上调用 Promise.resolve,这将导致无限递归,因为它试图展平无限嵌套的 promise。
let thenable = {
then: (resolve, reject) => {
resolve(thenable)
}
}
Promise.resolve(thenable) // 这会造成一个死循环!!!
示例
const promise1 = Promise.resolve(123)
promise1.then((value) => {
console.log(value) //123
})
// 1. 非 Promise 对象,非 thenable 对象
Promise.resolve(1).then(console.log) // 1
// 2. Promise 对象成功状态
const p2 = new Promise((resolve) => resolve(2))
Promise.resolve(p2).then(console.log) // 2
// 3. Promise 对象失败状态
const p3 = new Promise((resolve, reject) => reject('err3'))
Promise.resolve(p3).catch(console.error) // err3
// 4. thenable 对象
const p4 = {
then(resolve) {
setTimeout(() => resolve(4), 1000)
}
}
Promise.resolve(p4).then(console.log) // 4
// 5. 什么都不传
Promise.resolve().then(console.log) // undefined