單純地「由上而下」執行程式碼,而且一次只執行一件事,也就是「按順序執行,一個動作結束才能切換到下一個」。缺點是你需要「等待」事情執行完畢,才能繼續往下走。
盡可能讓主要的執行程序不需要停下來等待,若遇到要等待的事情,就發起一個「非同步處理」,讓主程序繼續執行,等到該操作執行完畢時,再回頭通知主程序,並交付處理結果。
為了讓管理非同步的程式碼變得更簡單,語法上主要使用Promise 和 async/await ,來寫出非同步式的程式碼。
CallBack的定義:一個程式執行完再去執行另一個程式。
Callback 的必要條件:
function A(Fn) {
console.log('Hello')
Fn()
}
function B() {
console.log('Good')
}
A(B); // 直接將 B 函數作為參數傳遞給 A
說明:
function A () {
setTimeout(function() {
console.log('Hello')
}, 5)
}
function B () {
console.log('Good')
}
function C () {
console.log('Good Morining')
}
A()
B()
C()
說明:
setTimeout
本身是非同步的函式。在設定這 5 毫秒的延時內,JavaScript 不會等待,它會繼續執行後面的代碼,等到 5 毫秒到了,再切回來執行 setTimeout
裡的 console.log('hello')
。B()
和(C)
時就立即執行。輸出的順序會是: