Fork me on github

【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

参考:Promise.resolve() - JavaScript | MDN (mozilla.org)

posted @ 2023-06-15 21:04  zjy4fun  阅读(1109)  评论(0编辑  收藏  举报