AJAX即「Asynchronous JavaScript and XML」(非同步的JavaScript與XML技術),指的是一套綜合了多項技術的瀏覽器端網頁開發技術。
from 維基百科
其實這個技術,就是以不更新整個頁面,可以部份地或小地方去修改在頁面上的資料。
那非同步的含義就是不需要等對方回應,就能做下一件事。
回到程式碼上來說,我們都知道程式碼是一行一行的往下執行,所以如果以以下的例子來看
function ping(){
console.log('Ping!');
}
function pong(){
console.log('Pong!');
}
function play(){
console.log('Go!');
ping();
pong();
console.log('Game Set!')
}
play();
當我們執行 play 這個 function 的時候,會按照順序執行,畫面如下:
接下來我想要做的是,在 ping 這個 function 內再做一件事,加上一個 setTimeout 的function,它的用途是有點像是設定在多少時間後去執行某一動作。在這裡,我想要在它再 3000 毫秒,其實也是 3 秒後要印出大絕招。
function ping(){
console.log('Ping!');
setTimeout(()=>{
console.log('大絕招!');
},3000)
}
function pong(){
console.log('Pong!');
}
function play(){
console.log('Go!');
ping();
pong();
console.log('Game Set!')
}
play();
如果這著我們剛剛的程式碼是一行一行往下執行的話,那執行的順序應該是
Go!
Ping!
大絕招
Pong!
Go!
Game Set!
但是我們在 JS bin 看看,會發現:
會發現,執行 setTimeout 時,有依據所寫的 function 延遲了三瞟,因此加入了 setTimeout function 並沒有打亂了整個順序,這就是非同步。