此博客是本人从学生时代开始做笔记所用, 部分是工作所遇问题,做填坑笔记,部分闲来查阅资料,加上自己的理解所总结的学习笔记, 常忙得不可开交,若漏了资料来源,望通知~ 前路漫漫,写点东西告诉自己正在一点点进步,而不要迷失于繁忙。

Promise.resolve解析

总结自:https://blog.csdn.net/lq15310444798/article/details/81275278

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(){
    console.log("two");
});
console.log("one");

 

posted @ 2019-09-03 14:12  炎泽  阅读(3300)  评论(0编辑  收藏  举报