在不使用Promise對象,僅使用簡單的回調函數來實現異步操作時(如setTimeout),JavaScript引擎(主線程)都會依賴于瀏覽器的其他線程(如定時觸發線程)來并發的執行異步任務的第一個階段,當第一個階段結束時,返回結果并將作為異步任務的第二個階段的回調函數推送入消息隊列中,依靠Event Loop讓主線程讀取執行,那么,使用Promise對象時,Promise對象是否就像是一個代理,瀏覽器的輔助線程首先將異步任務第一階段的結果傳遞給Promise對象,并改變Promise對象的狀態,然后通過Promise對象將異步任務比一階段執行的結果傳遞給調用之前通過then()或catch()為異步任務第二個階段注冊的回調函數,從而來執行異步任務的第二階段?那么通過then()或catch()注冊的回調函數也會進入消息隊列中嗎?瀏覽器是不是也有一個線程來管理Promise對象,就像瀏覽器的HTTP異步請求線程來管理Ajax一樣?是不是使用Promise后,更加繁瑣了?對于Promise的本質還是沒有弄清,有沒有大神能夠形象的講解一下Promise到底和普通的回調函數實現異步有那些區別.....不勝感激
Promise對象
楊__羊羊
2018-12-12 15:14:37