鍍金池/ 問答/HTML/ 什么時候使用回調(diào)函數(shù)呢?

什么時候使用回調(diào)函數(shù)呢?

比如有個div是隱藏的 點擊按鈕后讓它顯示,5秒鐘后再隱藏起來 這種情況是不是不使用回調(diào)函數(shù)也可以?。扛悴欢畬嶋H使用中什么時候才用到回調(diào)函數(shù)?這個例子可以用回調(diào)函數(shù)寫嗎?應(yīng)該怎樣寫呢?

oBtn1.onclick=function(){
       oDiv1.style.display='inline-block';
       setTimeout("document.getElementById('div1').style.display = 'none';", 5000)
}
回答
編輯回答
逗婦惱

在你覺得需要使用回調(diào)函數(shù)的時候使用回調(diào)函數(shù)。
回調(diào)函數(shù)最大的兩個作用在我看來
一個是對異步的處理,因為js的單線程機制,所有的異步操作執(zhí)行的時候其實程序流已經(jīng)走完了,這個時候如果你希望在ajax這種異步請求后執(zhí)行操作就需要回調(diào)函數(shù)。
二是一種設(shè)計模式?函數(shù)作為參數(shù)傳遞,其實傳遞的也是一個指針,而這個指針還是跟原來的對象進行綁定的。這個時候有的時候就可以做出一些操作。
比如在一個對象中改變另外一個對象,實現(xiàn)代理服務(wù),這種情況在angularjs中比較常見。
而你這里對回調(diào)函數(shù)的困惑,實際上是因為你對函數(shù)的異步機制不了解導(dǎo)致的,也就是對于第一種情況的不了解。一切異步操作都會用到回調(diào)函數(shù)。
當(dāng)然現(xiàn)在有了promise跟async這句話倒是可以再說說了,但是我覺得本質(zhì)上還是回調(diào)函數(shù)

2017年8月13日 02:49
編輯回答
六扇門

所謂回調(diào),是在一個函數(shù)做完另外一個函數(shù)的參數(shù)。
var callback = function (){

   //顯示代碼

}
oBtn1.onclick = function(callback){

   //隱藏代碼
   setTimeOut(callback(), 5000)

}
比如說你要調(diào)用一個函數(shù),這個函數(shù)你是無法修改或者已經(jīng)規(guī)范好的,但是要有回調(diào)函數(shù),而你想在調(diào)用這個函數(shù)的過程中執(zhí)行你自己的邏輯代碼,這個時候就可以用回調(diào)函數(shù)。

2017年9月17日 21:37