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(()=>{});