javascript中的異步執(zhí)行順序

最近瀏覽資料的過程中重新了解了些JavaScript中異步的知識踪旷,對這塊知識有了更多的認(rèn)識曼氛,于是整理下加深自己對于這部分內(nèi)容的理解。

樹立認(rèn)知

JavaScript引擎是常駐于內(nèi)存中的令野,這也是為什么JavaScript中對dom進(jìn)行事件綁定可以生效的原因舀患,當(dāng)dom節(jié)點(diǎn)遇到觸發(fā)事件的條件,引擎會自動找尋回調(diào)函數(shù)代碼去執(zhí)行气破,并且引擎還會設(shè)定指定時(shí)間去執(zhí)行代碼聊浅,類似set time out函數(shù)這種功能代碼。

宏觀任務(wù)與微觀任務(wù)

es5之后js中引入了promise的概念现使,這讓js引擎也可以發(fā)起任務(wù)低匙,我門將宿主環(huán)境發(fā)起的任務(wù)稱為宏觀任務(wù),將js引擎發(fā)起的任務(wù)稱為微觀任務(wù)(promise發(fā)起的)碳锈,這里提一句set time out發(fā)起的是宏觀任務(wù)顽冶,他是宿主引擎中的API

這里要注意的一點(diǎn)是每個(gè)宏觀任務(wù)一定會保證在這個(gè)宏觀任務(wù)中發(fā)起的微觀任務(wù)完成才會執(zhí)行其他宏觀任務(wù)

實(shí)例

下邊來個(gè)實(shí)例來具體分析看看js中異步執(zhí)行的規(guī)律售碳。

setTimeout(()=> console.log('a'),0);
var r1= new Promise((resolve,reject)=> {
  resolve()
}).then(()=>{
  var begin = Date.now();
  while(Date.now()-begin<1000){
  }
  console.log('c1');
  new Promise((resolve,reject)=>{
    resolve()
  }).then(()=>{
    console.log('c2')
  })
})
// c1
// c2
// a

上邊例子中强重,宏觀任務(wù)中執(zhí)行了一個(gè)setTimeout佩迟、執(zhí)行了一個(gè)promise(發(fā)起了一個(gè)微觀任務(wù)),在微觀任務(wù)中延遲了一秒后又建立了一個(gè)promise(又一次發(fā)起了一個(gè)微觀任務(wù))竿屹。

根據(jù)先宏觀任務(wù)后微觀任務(wù)的規(guī)則报强,就可以很容易的明白最終的打印結(jié)果。

分析異步執(zhí)行順序

  • 確定多少宏觀任務(wù)

  • 確定每個(gè)宏觀任務(wù)中有多少微觀任務(wù)

  • 確定每個(gè)宏觀任務(wù)中微觀任務(wù)執(zhí)行順序

  • 確定每個(gè)宏觀任務(wù)執(zhí)行順序

  • 確定整個(gè)執(zhí)行順序

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末拱燃,一起剝皮案震驚了整個(gè)濱河市秉溉,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌碗誉,老刑警劉巖召嘶,帶你破解...
    沈念sama閱讀 219,366評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異哮缺,居然都是意外死亡弄跌,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,521評論 3 395
  • 文/潘曉璐 我一進(jìn)店門尝苇,熙熙樓的掌柜王于貴愁眉苦臉地迎上來铛只,“玉大人,你說我怎么就攤上這事糠溜〈就妫” “怎么了?”我有些...
    開封第一講書人閱讀 165,689評論 0 356
  • 文/不壞的土叔 我叫張陵非竿,是天一觀的道長蜕着。 經(jīng)常有香客問我,道長红柱,這世上最難降的妖魔是什么承匣? 我笑而不...
    開封第一講書人閱讀 58,925評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮锤悄,結(jié)果婚禮上韧骗,老公的妹妹穿的比我還像新娘。我一直安慰自己铁蹈,他們只是感情好宽闲,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,942評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著握牧,像睡著了一般容诬。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上沿腰,一...
    開封第一講書人閱讀 51,727評論 1 305
  • 那天览徒,我揣著相機(jī)與錄音,去河邊找鬼颂龙。 笑死习蓬,一個(gè)胖子當(dāng)著我的面吹牛纽什,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播躲叼,決...
    沈念sama閱讀 40,447評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼芦缰,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了枫慷?” 一聲冷哼從身側(cè)響起让蕾,我...
    開封第一講書人閱讀 39,349評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎或听,沒想到半個(gè)月后探孝,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,820評論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡誉裆,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,990評論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了足丢。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,127評論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡霎桅,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出滔驶,到底是詐尸還是另有隱情,我是刑警寧澤卿闹,帶...
    沈念sama閱讀 35,812評論 5 346
  • 正文 年R本政府宣布揭糕,位于F島的核電站,受9級特大地震影響著角,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜旋恼,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,471評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望冰更。 院中可真熱鬧产徊,春花似錦、人聲如沸蜀细。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,017評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽谆刨。三九已至塘娶,卻和暖如春痊夭,著一層夾襖步出監(jiān)牢的瞬間刁岸,已是汗流浹背她我。 一陣腳步聲響...
    開封第一講書人閱讀 33,142評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留鸦难,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,388評論 3 373
  • 正文 我出身青樓合蔽,卻偏偏與公主長得像,于是被迫代替她去往敵國和親拴事。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,066評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 官方中文版原文鏈接 感謝社區(qū)中各位的大力支持衡瓶,譯者再次奉上一點(diǎn)點(diǎn)福利:阿里云產(chǎn)品券,享受所有官網(wǎng)優(yōu)惠哮针,并抽取幸運(yùn)大...
    HetfieldJoe閱讀 11,026評論 26 95
  • 你不知道JS:異步 第三章:Promises 在第二章坦袍,我們指出了采用回調(diào)來表達(dá)異步和管理并發(fā)時(shí)的兩種主要不足:缺...
    purple_force閱讀 2,068評論 0 4
  • 官方中文版原文鏈接 感謝社區(qū)中各位的大力支持,譯者再次奉上一點(diǎn)點(diǎn)福利:阿里云產(chǎn)品券捂齐,享受所有官網(wǎng)優(yōu)惠,并抽取幸運(yùn)大...
    HetfieldJoe閱讀 8,681評論 0 29
  • 特別說明奠宜,為便于查閱,文章轉(zhuǎn)自https://github.com/getify/You-Dont-Know-JS...
    殺破狼real閱讀 890評論 0 2
  • 引子 在1762年娩嚼,清州一位世代戰(zhàn)神的家里,兒子張?zhí)煲肀还鹣弟婇y在幽州槍殺榴都,這對于張家這...
    dghyf閱讀 73評論 0 0