了解非同步 & 同步、call back queue、call stack、web api

更新 發佈閱讀 6 分鐘

首先我們要先了解非同步 & 同步!

我們先講同步:

同步的意思是說,我們正常的程式碼都是一行一行做,如果前一行的程式碼沒有做完,下一行就不能做,說白一點就是一件事情沒做完,下一件事情就不能做。

範例:

function step1() {
console.log("第一步")
}

function step2() {
console.log("第二步")
}

function step3() {
console.log("第三步")
}

step1()  //第一步
step2() //第二步
step3() //第三步

會必須等上面跑完才會跑下面。




那如果是非同步呢?

非同步就是說白一點,先讓主要程式碼先跑,而次要的程式碼把事情做完之後再回到主要的程式碼進行運作。

範例:

console.log("1")

setTimeout(() => { //setTimeout是指等一段時間之後,執行一次某個函式
console.log("2") //等待1000毫秒(1秒)在印出來'2'。
}, 1000)

console.log("3")

//輸出的時候會先跑出​'1'、'3'、最後才是'2'




那接下來call back queue:
call back queueu又稱Task Queue,叫做[回調隊列],就是["讓非同步的東西完成後,callback 等著被執行的排隊區"]

如果在說白一點,就是說"他是在非同步完成後,callback 等待被執行的地方,至於什麼時候跑,要看 Call Stack 什麼時候空"。

範例:

console.log("A")

setTimeout(() => {
console.log("B (timeout)")
}, 0)

console.log("C")

這邊call back queue流程就是:

  1. console.log("A") 立刻跑(進 Call Stack → 執行)
  2. setTimeout(..., 0) 不是「立刻執行 callback」
    它是:交給瀏覽器的計時器(Web APIs)去計
  3. console.log("C") 立刻跑完
  4. 這時 Call Stack 清空了
  5. 計時器到點後,把 () => console.log("B") 丟進 Callback Queue
  6. Event Loop 看到 Call Stack 空了 → 把隊伍最前面的 callback 拿進 Call Stack 執行
    → 到最後 B 才印




call stack:

call stack叫做呼叫堆疊,就是javascript現在正在執行的事情清單。

說白一點,就是現在做這件事情,而這件事情處理完之後再做下一件,除非中途有更緊急的事情要處理,就會先處理更緊急的事情,處理完之後再做後續的工作跟事情。

舉例:

function a() {
console.log("a")
}

function b() {
console.log("b")
}

a()
b()

在Call Stack裡就是:

執行a() → a 進 Call Stack → 印出 a → a 出 Stack → 執行 b() → b 進 Stack→ 印出 b → b 出 Stack。

然後他也可以被插隊

範例:

function a() {  //先處理 a
b() //發現有緊急的 b 要處理
console.log("a") //在跑回來
}

function b() { //就先跑來處理 b 這邊
console.log("b") //處理完了
}

a() //輸出 b a

流程就是:

a,做到一半發現 b 很緊急要做→ 去做 b 到了 b 做完 → 回來繼續 a





最後web api:

web api是指瀏覽器JavaScript 「等、聽、跑很慢的事情」的地方。

例如:


計時:

  • setTimeout
  • setInterval

事件:

  • addEventListener(click / input / scroll)

網路:

  • fetch
  • XMLHttpRequest

其他:

  • localStorage
  • geolocation
  • setImmediate


範例:

console.log("A")  //跑A,印A

setTimeout(() => { //跑到這邊setTimeout
console.log("B") //這邊javascript會先把這段給Web APIs處理,等你1秒
}, 1000)

console.log("C") //跑C,印C
//Web APIs說:「1秒時間到囉」,跑B,印B
//輸出'A'、'C'、'B'

流程過程就是:

1️ . console.log("A")

→ 直接進 Call Stack → 印 A

  1. setTimeout(...)

JS 把事情交給 Web APIs

→ Web APIs 開始幫你等 1 秒

3️. console.log("C")

→ Call Stack 繼續跑 → 印 C

4️. 1 秒到了

Web APIs 說:「時間到囉」 → 把 callback 放進 Callback Queue

5️. Call Stack 空了

→ Event Loop 把 callback 丟回 Call Stack → 印 B



留言
avatar-img
睿哲楊的沙龍
2會員
18內容數
睿哲楊的沙龍的其他內容
2025/12/29
字串 String: 字串(String)是一連串字元組成的序列,是程式設計中表示和處理文字資料的基礎類型,可由字母、數字、符號或空格組成,通常用雙引號括起來,而字串最常出現的地方:表單輸入、搜尋、顯示文案、格式化資料(電話/日期/金額)、做驗證(是否空白、長度、是否含特定字)。 取得長度:
2025/12/29
字串 String: 字串(String)是一連串字元組成的序列,是程式設計中表示和處理文字資料的基礎類型,可由字母、數字、符號或空格組成,通常用雙引號括起來,而字串最常出現的地方:表單輸入、搜尋、顯示文案、格式化資料(電話/日期/金額)、做驗證(是否空白、長度、是否含特定字)。 取得長度:
2025/12/14
javascript有分兩大類型別:原始型別 (Primitive Types) 和物件型別 (Object Types)兩種,而原始型別包含string、number、boolean、null、undefined、Symbol,物件型別則是包含陣列、函式、日期等。 這次我們來了解原始型別:
2025/12/14
javascript有分兩大類型別:原始型別 (Primitive Types) 和物件型別 (Object Types)兩種,而原始型別包含string、number、boolean、null、undefined、Symbol,物件型別則是包含陣列、函式、日期等。 這次我們來了解原始型別:
2025/12/08
var : var的作用域是屬於"函式作用域(Function Scope)"意思是當我們在一個函數內部用 var 宣告變數時,變數只在該函數內部可見,是可以被重複宣告的,是使用在變數可能或不會被重新賦予值,或者宣告範圍在整個函式(function)或者區塊(block)中,但是跟let相比之下,比
Thumbnail
2025/12/08
var : var的作用域是屬於"函式作用域(Function Scope)"意思是當我們在一個函數內部用 var 宣告變數時,變數只在該函數內部可見,是可以被重複宣告的,是使用在變數可能或不會被重新賦予值,或者宣告範圍在整個函式(function)或者區塊(block)中,但是跟let相比之下,比
Thumbnail
看更多
你可能也想看
Thumbnail
距離台灣很近的菲律賓遊學,在過去幾年成為台灣、日本、韓國人遊學讀英文的平價首選,其中菲律賓第二大城宿霧語言學校(Cebu)更是很多人度假與遊學的熱門城市目的地。在這篇菲律賓語言學校推薦文章中,飛寶將幫大家整理 12 間菲律賓遊學推薦學校,包含熱門宿霧語言學校推薦以及特色、課程與費用介紹
Thumbnail
距離台灣很近的菲律賓遊學,在過去幾年成為台灣、日本、韓國人遊學讀英文的平價首選,其中菲律賓第二大城宿霧語言學校(Cebu)更是很多人度假與遊學的熱門城市目的地。在這篇菲律賓語言學校推薦文章中,飛寶將幫大家整理 12 間菲律賓遊學推薦學校,包含熱門宿霧語言學校推薦以及特色、課程與費用介紹
Thumbnail
这篇文章主要介绍了NFT是什么?一文了解什么是NFT的相关资料,需要的朋友可以参考下本文详细内容介绍 🚀 币安 - 全球最大加密货币交易所 💥 独家优惠 💥 💰 注册即享 20% 手续费返佣 🔑 专属邀请码: R851UX3N 一文了解什么是NFT 一、什么是NFT NFT 是
Thumbnail
这篇文章主要介绍了NFT是什么?一文了解什么是NFT的相关资料,需要的朋友可以参考下本文详细内容介绍 🚀 币安 - 全球最大加密货币交易所 💥 独家优惠 💥 💰 注册即享 20% 手续费返佣 🔑 专属邀请码: R851UX3N 一文了解什么是NFT 一、什么是NFT NFT 是
Thumbnail
你為什麼想減肥??? 已經罹患某些疾病,像是多囊性卵巢 糖尿病、高膽固醇.... 對身上某部位不滿意.... 想穿上漂亮衣服... 可是你知道嗎?? 每次在諮詢時很多人都會跟我說:「我有在運動啊!」或是「我都沒時間運動 所以減不下來」。 但是減肥最重要的一點,佔比最大的部份
Thumbnail
你為什麼想減肥??? 已經罹患某些疾病,像是多囊性卵巢 糖尿病、高膽固醇.... 對身上某部位不滿意.... 想穿上漂亮衣服... 可是你知道嗎?? 每次在諮詢時很多人都會跟我說:「我有在運動啊!」或是「我都沒時間運動 所以減不下來」。 但是減肥最重要的一點,佔比最大的部份
Thumbnail
  猜想以他的"用功"狀況這天就會查出來吧?如果被問到就一問三不知,嗯!我這樣告訴自己_   而為了逃避他的追問就出來閒遊吧,順便再確認有無計畫的必要性。走在原來人聲鼎沸的熱鬧街道,現在只剩兩三人還在走動,商家也倒了不少,一些地方甚至生了灰塵,嗯......
Thumbnail
  猜想以他的"用功"狀況這天就會查出來吧?如果被問到就一問三不知,嗯!我這樣告訴自己_   而為了逃避他的追問就出來閒遊吧,順便再確認有無計畫的必要性。走在原來人聲鼎沸的熱鬧街道,現在只剩兩三人還在走動,商家也倒了不少,一些地方甚至生了灰塵,嗯......
Thumbnail
在AI浪潮下,009819 中信美國數據中心及電力ETF 直接卡位算力與電力雙主軸,等於掌握AI最核心基建。2008從 Apple Inc. 與 iPhone 帶動供應鏈,到如今AI崛起,主線已由應用端轉向底層。AI發展離不開算力與電力支撐,009819的價值,在於押中「沒有它不行」的核心資產。
Thumbnail
在AI浪潮下,009819 中信美國數據中心及電力ETF 直接卡位算力與電力雙主軸,等於掌握AI最核心基建。2008從 Apple Inc. 與 iPhone 帶動供應鏈,到如今AI崛起,主線已由應用端轉向底層。AI發展離不開算力與電力支撐,009819的價值,在於押中「沒有它不行」的核心資產。
Thumbnail
這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。
Thumbnail
這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。
Thumbnail
全新集數EP.3已上線   每週一更新:時事議題、軍事常識、台海關係⋯⋯都在《王立第二戰研所》!  EP3 大概是瞄準總統府打到北一女?這集來了解「彈道飛彈無敵論」  點此收聽:《方格子電台-王立第二戰研所》  |Sound on、KKBOX、Spotify、Google podcast、F
Thumbnail
全新集數EP.3已上線   每週一更新:時事議題、軍事常識、台海關係⋯⋯都在《王立第二戰研所》!  EP3 大概是瞄準總統府打到北一女?這集來了解「彈道飛彈無敵論」  點此收聽:《方格子電台-王立第二戰研所》  |Sound on、KKBOX、Spotify、Google podcast、F
Thumbnail
若高中生也搞不懂課綱而發問時,你的做法是哪一種? A叫小孩找老師? B不干我的事自己想辦法? C這怪這麼難打我要來研究一下! 每個孩子天生氣質不同,就像有些身心孩子就需要天使家長的陪伴,你要放手讓孩子成長卻也同時要記得:要怎樣認為你是孩子最堅強的後盾,這不是口號而已。 攝影師:Bess Hamiti
Thumbnail
若高中生也搞不懂課綱而發問時,你的做法是哪一種? A叫小孩找老師? B不干我的事自己想辦法? C這怪這麼難打我要來研究一下! 每個孩子天生氣質不同,就像有些身心孩子就需要天使家長的陪伴,你要放手讓孩子成長卻也同時要記得:要怎樣認為你是孩子最堅強的後盾,這不是口號而已。 攝影師:Bess Hamiti
Thumbnail
不知如何回首來時路的人,永遠不會抵達目的地。 He who does not know how to look back at where he came from will never get to his destination. 荷西・黎剎(José Rizal)
Thumbnail
不知如何回首來時路的人,永遠不會抵達目的地。 He who does not know how to look back at where he came from will never get to his destination. 荷西・黎剎(José Rizal)
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
Thumbnail
《轉轉生》(Re:INCARNATION)為奈及利亞編舞家庫德斯.奧尼奎庫與 Q 舞團創作的當代舞蹈作品,結合拉各斯街頭節奏、Afrobeat/Afrobeats、以及約魯巴宇宙觀的非線性時間,建構出關於輪迴的「誕生—死亡—重生」儀式結構。本文將從約魯巴哲學概念出發,解析其去殖民的身體政治。
Thumbnail
《轉轉生》(Re:INCARNATION)為奈及利亞編舞家庫德斯.奧尼奎庫與 Q 舞團創作的當代舞蹈作品,結合拉各斯街頭節奏、Afrobeat/Afrobeats、以及約魯巴宇宙觀的非線性時間,建構出關於輪迴的「誕生—死亡—重生」儀式結構。本文將從約魯巴哲學概念出發,解析其去殖民的身體政治。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News