iT邦幫忙

2021 iThome 鐵人賽

DAY 20
0
setTimeout(()=>{console.log("I'm callback function")},2000);
console.log("I'm 同步任務1")

setTimeout(參數1,參數2,參數...)是一個讓程式延緩幾毫秒再執行的function。

  • 第1個參數:放想要延緩再執行的function
  • 第2個參數:放想要延緩幾毫秒
  • 第3個參數(可選):想放其他的args,沿路放下去

callback的第一個參數,想延緩執行的function,其實就是callback function(回調函式)

callback function(回調函式)

想法

可以想成,去維修中心修電腦,比較難修不能在櫃檯立馬解決的,我們會希望顧客先回去,工程師修好了再打電話叫他,不要一直卡在櫃台,會擋到後面的其他顧客。

使用時間

就是這個不要一直卡在櫃檯的道理,當一個程式要執行得有點久,或是他執行所花費的時間不穩定(i.e.跟網路相關的),我們會希望他不要卡在那裏,站著茅坑不...,先去旁邊自己玩

同步vs異步

  • 同步:就是一行一行,照順序執行下來
console.log("A");
console.log("B");
console.log("C");

執行結果就是:
A
B
C

  • 異步:叫他去旁邊自己玩,玩完了記得回家就好
    再來看一下開頭的例子:
setTimeout(()=>{console.log("I'm callback function")},2000);
console.log("I'm 同步任務1")
* 把要等很久(2秒鐘),才要執行的`()=>{console.log("I'm callback function")}`叫他去旁邊待著(異步)
* 先執行其他的同步任務
* 等他2秒鐘等好了,再執行剛剛去旁邊玩的異步任務

小坑請注意:

setTimeout(console.log("t"),5000)
setTimeout(()=>{console.log("t")},5000)

為甚麼上面的不對 一定要用下面的?

function maow(){
	alert("maow")
}
maow;  //只是呼叫這個function object出來讓我看看
maow() //呼叫這個function object並執行他

因為有點像maowmaow() 的差別,
setTimeout()的第一個參數需要的不是正在執行的function object。


上一篇
JSON
下一篇
let / const 細節版
系列文
前端幼鳥三十天養成記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言