同步任務(wù)指的是,在主線程上排隊(duì)執(zhí)行的任務(wù),只有前一個(gè)任務(wù)執(zhí)行完畢,才能執(zhí)行下一個(gè)任務(wù).
異步任務(wù)指的是,不進(jìn)入主線程,而是進(jìn)入"任務(wù)隊(duì)列"的任務(wù),只有任務(wù)隊(duì)列通知主線程,某個(gè)異步任務(wù)可以執(zhí)行了,該任務(wù)在會(huì)進(jìn)入主線程執(zhí)行.
異步執(zhí)行的運(yùn)行機(jī)制如下:
? ? <1>? ? 所有的同步任務(wù)都在主線程上執(zhí)行,形成一個(gè)執(zhí)行棧(execution context stack)
? ? <2>? ? 主線程之外,還存在一個(gè)"任務(wù)隊(duì)列"(task queue),只要一無任務(wù)有了運(yùn)行結(jié)果,就是在任務(wù)隊(duì)列志宏放置一個(gè)事件
? ? <3>? ? 一旦"執(zhí)行棧"中的所有同步任務(wù)執(zhí)行完畢,系統(tǒng)就會(huì)讀取"任務(wù)隊(duì)列",看看里面有哪些事件.那些對應(yīng)的異步任務(wù),于是結(jié)束等待狀態(tài),進(jìn)入執(zhí)行棧,開始執(zhí)行
? ? <4>? ? 主線程不斷重復(fù)<3>
