5.同步和異步.md

  • 單線程和異步
    • 背景:單線程
      • (JS本質(zhì))JS是單線程語言,只能做一件事
      • 瀏覽器和nodejs已支持JS啟動進程,如web worker(但并不是說能改變JS單線程這個本質(zhì))
      • JS和DOM渲染共用同一線程:因為JS可修改DOM結(jié)構(gòu),因此會有JS堵塞DOM構(gòu)建的說法
    • 異步:
      • 解決場景:遇到等待(網(wǎng)絡請求、定時任務)不能卡住
      • 回調(diào)callback函數(shù)形式
      • 特點:不會阻塞代碼執(zhí)行,會先同步按序執(zhí)行JS,直到異步的時間點到了,再去執(zhí)行之前的回調(diào)函數(shù),【就算setTimeout的時間點為0,它依然是個異步回調(diào)函數(shù),因此依然會在JS同步執(zhí)行全部完畢之后再去執(zhí)行】
  • 應用場景
    • 定時任務,如setTimeout
    • 網(wǎng)絡請求,如ajax圖片加載
  • 如果都是同步執(zhí)行,卡就卡,等待就等待,那么等待的過程CPU是空閑的,這是在浪費資源
  • callback hell 和promise(promise是用于解決callback hell)
    • callback hell是在ajax出來之后,promise出來之前,一直被詬病的一個問題,不斷地嵌套請求
    • promise產(chǎn)生解決了:
      • 管道形式,改變了callback hell的嵌套形式,符合人的書寫習慣
    • promise語法:
new Promise((resolve,reject)=>{
 // ...請求代碼
}).then(success=>{
  resolve(success)
}).catch(error=>{
  reject(error)
})
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

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