Promise.resolve 方法详解
Promise.resolve 返回一个 Promise 实例。
参数分 4 种情况:
1. 参数为 Promise 实例
返回此实例,可能执行 catch。
2. 参数为 thenable 对象
备注:thenable 对象为带有 then 方法的对象。将此对象转换为 Promise 实例,并立即执行其 then 方法,不会执行 catch。
let thenable = { //注意 then 里居然有 resolve,reject
then: function(resolve, reject){
resolve('lala')
}
}
Promise.resolve(thenable).then((value)=>{
console.log(value)//lala
})
3. 参数为基本类型或非 thenable 对象的对象
返回一个 Promise 对象,状态为 resolved(执行成功,进入 then)。直接执行 then 方法,且 value 为参数的值,不会执行 catch(因为状态为 resolved)。
Promise.resolve(1).then((value)=>{
console.log(value)//1
})
4. 不带任何参数
直接返回一个状态为 resolved 的 Promise 对象,不会执行 catch。
注意:立即 resolve 的 Promise 对象是在本轮'事件循环'结束时执行,而不是在下一轮'事件循环'开始时执行!
setTimeout(function(){
console.log("three");//下一轮事件循环执行
},0);
Promise.resolve().then(function(){
.();
});
.();

