Promise.resolve和Promise.reject的实现原理

Promise.resolve(value)

基本使用:
  • 用于创建一个成功的promise
  • 属于Promise的静态方法
  • 该方法接收参数value,value的值可以是普通值或者promise
  • 返回值是一个promise实例,可以支持链式.then
  1. value是普通值,会将value作为下一次then的结果
Promise.resolve(100).then(res => {
  console.log(res) // 100
})
  1. value是一个promsie,会解析promsie,将promise的结果作为下一次then的结果,内部靠reslolvePromise这个方法来解析promise
const p = new Promise((resolve, reject) => {
  resolve('hello promise')
})
Promise.resolve(p).then(res => {
  console.log(res) // 'hello promise'
})
实现原理:
  • 内部就是返回了一个promise,调用resolve方法,将value参数传入
  • 具体的promise解析靠的是promise的实现原理
Promise.resolve = function(value) {
    return new Promise((resolve, reject) => {
        resolve(value)
    })
}

Promise.reject(reason)

基本使用:
  • 用于创建一个失败的promise
  • 也是Promise的静态方法
  • 参数接收reason,reason可以是promise或者普通值,但是不会去解析处理promise,而是作为普通值处理
  • 返回值也是一个promise
  1. reason 是一个普通值,会作为下一次catch的结果
Promise.reject(100).catch(res => {
    console.log(res) // 100
})
  1. reason是一个promise,不会做任何处理和解析,和普通值一样
const p = new Promise((resolve, reject) => {
  resolve('hello promise')
})
Promise.reject(p).catch(res => {
    console.log(res) // Promise { 'hello' }
})
实现原理:
  • 内部就是返回了一个promise,调用reject方法,将reason参数传入
  • 具体的promise解析靠的是promise的实现原理
Promise.reject= function(reason) {
    return new Promise((resolve, reject) => {
        reject(reason)
    })
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容