總結自: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");
