iT邦幫忙

2024 iThome 鐵人賽

DAY 25
0
佛心分享-IT 人自學之術

跟著鱷魚妹妹一起坐牢之JavaScript 30天系列 第 25

第二十五天 - - JavaScript 瀏覽器執行環境(run time)

  • 分享至 

  • xImage
  •  

https://ithelp.ithome.com.tw/upload/images/20241004/2016866137jtzPkPzW.png
每個瀏覽器都有自己的引擎,最知名的是google的v8引擎,js引擎會包含一個HEAP跟CALL STACK,HEAP會存放變數、函式等,CALL STACK像是執行的地方,事件進入會從上往下執行,WEB API就有DOM API、計時器、Fetch API等等,但是他們是屬於非同步的(Async),CALLBACK QUEUE是物件眝列,可以想成分發任務的地方。

整個流程是事件發生時,會先到CALLBACK QUEUE,若CALL STACK清空時,CALLBACK QUEUE便把事件傳遞至CALL STACK執行,WEB API如果有執行的話,也是會到CALLBACK QUEUE等待傳遞,整個流程稱為EVENT LOOP。

而什麼是非同步呢?首先先說同步,Javascript 是一種「單執行續 (Single-Thread)」的語言,一次只能做一件事情,如果安排了很多事情做,就會讓這些事排隊,再一件一件做,逐行執行。同步,就是一次只做一件事情。非同步是一次可以做很多事情,而不用一次一件事情做完在做下一件。

事件都是同步不好嗎?答案是不好,網頁會塞車,網頁看起來好像當掉了,實際上是工作太多塞住,因為要一件事情做完再能做下一件事情,這種現象稱為阻塞 (Blocking)。


上一篇
第二十四天 - - JavaScript API (Application Programming Interface)
下一篇
第二十六天 - - JavaScript 同步、非同步&Promise
系列文
跟著鱷魚妹妹一起坐牢之JavaScript 30天30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言