温故知新(七五)Promise.resolve(obj) obj 有几种可能

Promise.resolve(obj) obj 有几种可能

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Promise.resolve 方法的参数分为四种情况


1.参数是一个 Promise 实例

如果参数是一个 Promise 实例,那么 Promise.resolve 将不做任何修改,原封不动的返回这个实例。


2.如果参数是一个 thenable 对象

thenable 对象值得是具有 then 方法 的对象,比如下面这个对象

let thenable = {
    then:function(resolve,reject){
        console.log('aaaa');
        resolve('hello');
    }
}


Promise.resolve 方法会将这个对象转为 Promise 对象,然后立即执行 thenable 对象的 then 方法。返回的 Promise 会“跟随”这个 thenable 对象,采用它的最终状态;

let thenable = {
    then:function(resolve,reject){
        console.log('aaaa');
        resolve('hello');
    }
}
let p = Promise.resolve(thenable);//aaa
p.then(res=>console.log(res));//hello

3.参数不是具有 then 方法的对象或根本不是对象


如果参数一个原始值,或者是一个不具有 then 方法的对象,那么 Promise.resolve 方法返回一个新的 Promise 对象,状态为 resolved。

let p = Promise.resolve('aaa');
p.then(res=>console.log(res));//aaa


4.不带任何参数

Promise.resolve 方法运行在调用时不带有任何参数,而直接返回一个 resolved 状态的 Promise 对象。

let p = Promise.resolve();
p.then(()=>{});

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值