iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 28
0
自我挑戰組

草頭黃小姐的 30 天 JavaScript 自學小本本系列 第 28

28 JavaScript 的基礎:AJAX 和 SetTimeout()

AJAX即「Asynchronous JavaScript and XML」(非同步的JavaScriptXML技術),指的是一套綜合了多項技術的瀏覽器網頁開發技術。

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 並沒有打亂了整個順序,這就是非同步。


上一篇
Day 27 認識一下 ES6: class-base vs prototype-base
下一篇
Day 29 JavaScript : promise
系列文
草頭黃小姐的 30 天 JavaScript 自學小本本30

尚未有邦友留言

立即登入留言