微任務與宏任務

+setTimeout(_ => {
-  console.log(4)
+})

+new Promise(resolve => {
+  resolve()
+  console.log(1)
+}).then(_ => {
-  console.log(3)
+})

+console.log(2)
setTimeout(_ => console.log(4))

        new Promise(resolve => {
        resolve()
        console.log(1)
        }).then(_ => {
        console.log(3)
        Promise.resolve().then(_ => {
            console.log('before timeout')
        }).then(_ => {
            Promise.resolve().then(_ => {
            console.log('also before timeout')
            })
        })
        })

        console.log(2)
setTimeout 做爲宏任務來存在 而 Promise.then 則是 微任務 上述代碼按序號輸出
    全部會進入的異步都是指的事件回調中的那部分代碼
    在同步代碼執行完成後纔回去檢查是否有異步任務完成,並執行對應的回調,而微任務又會在宏任務以前執行
    繼續在Promise 中實例化Promise 其輸出依然會早於 setTimeout 的宏任務

    Event - Loop 是個啥?

    JavaScript是一個單線程的語言,贊成時間不能處理多個任務 

    就像咱們去銀行辦理業務的時候

    每辦理完一個業務,櫃員就會問當前的用戶,是否還有其餘須要辦理的業務(檢查還有沒有微任務須要處理)

    而客戶明確告訴說沒有事情之後,櫃員就會查看後邊還有沒有等着辦業務的人(結束本次宏任務,檢查還有沒有宏任務須要處理)

    若是客戶說還有要辦理的業務(微任務) 就得接着辦理,直到辦理完成 (在當前的微任務沒有執行完成時,是不會執行下一個宏任務的)
相關文章
相關標籤/搜索