setTimeout(()=>{console.log("I'm callback function")},2000);
console.log("I'm 同步任務1")
setTimeout(參數1,參數2,參數...)是一個讓程式延緩幾毫秒再執行的function。
callback的第一個參數,想延緩執行的function,其實就是callback function(回調函式)
可以想成,去維修中心修電腦,比較難修不能在櫃檯立馬解決的,我們會希望顧客先回去,工程師修好了再打電話叫他,不要一直卡在櫃台,會擋到後面的其他顧客。
就是這個不要一直卡在櫃檯的道理,當一個程式要執行得有點久,或是他執行所花費的時間不穩定(i.e.跟網路相關的),我們會希望他不要卡在那裏,站著茅坑不...,先去旁邊自己玩
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並執行他
因為有點像maow
和 maow()
的差別,setTimeout()
的第一個參數需要的不是正在執行的function object。