你不知道的異步

異步函數(shù)

  • 誤區(qū):

    • 把script代碼放到body底部并不是異步執(zhí)行js代碼,僅僅是讓頁面優(yōu)先解析然后再解析執(zhí)行js代碼(注意:到j(luò)s代碼執(zhí)行完之前頁面都沒有被渲染)
  • 能做什么:

    • 異步代碼(例如:setTimeout)是將代碼放入異步調(diào)用棧,然后等待執(zhí)行線程先渲染完頁面后(即同步代碼執(zhí)行完,html所有標(biāo)簽解析完)后執(zhí)行。所以耗時(shí)的操作(如xmlHttpRequest,大量計(jì)算等)都需要使用異步
  • 總結(jié):

    • 異步代碼其實(shí)質(zhì)就是事件驅(qū)動(dòng)+回調(diào),只不過該"事件"是由瀏覽器控制觸發(fā)
  • 注意:

    • 異步列隊(duì)其實(shí)質(zhì)還是串行列隊(duì),僅僅只是讓線程渲染完頁面后執(zhí)行,如果大負(fù)荷計(jì)算,頁面還是會(huì)假死(無法點(diǎn)擊按鈕等。。。)。

    • xmlHttpRequest(ajax)是由瀏覽器(并發(fā))執(zhí)行然后通過事件驅(qū)動(dòng)來回調(diào)我們的js代碼的,并非setTimeout這種簡(jiǎn)單的放到同步代碼后執(zhí)行。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容