JS回撥函式--簡單易懂有例項
阿新 • • 發佈:2018-12-26
初學js的時候,被回撥函式搞得很暈,現在回過頭來總結一下什麼是回撥函式。
我們先來看看回調的英文定義:A callback is a function that is passed as an argument to another function and is executed after its parent function has completed。
字面上的理解,回撥函式就是一個引數,將這個函式作為引數傳到另一個函式裡面,當那個函式執行完之後,再執行傳進去的這個函式。這個過程就叫做回撥。
其實也很好理解對吧,回撥,回撥,就是回頭呼叫的意思。主函式的事先幹完,回頭再呼叫傳進來的那個函式。但是以前看過很多部落格,他們總是將回調函式解釋的雲裡霧裡,很高深的樣子。
舉一個別人舉過的例子:約會結束後你送你女朋友回家,離別時,你肯定會說:“到家了給我發條資訊,我很擔心你。” 對不,然後你女朋友回家以後還真給你發了條資訊。小夥子,你有戲了。其實這就是一個回撥的過程。你留了個引數函式(要求女朋友給你發條資訊)給你女朋友,然後你女朋友回家,回家的動作是主函式。她必須先回到家以後,主函式執行完了,再執行傳進去的函式,然後你就收到一條資訊了。
現在基本理解回撥函式的意思了吧。不理解的話沒關係,我們用程式碼說話。
//定義主函式,回撥函式作為引數
function A(callback) {
callback();
console.log( '我是主函式');
}
//定義回撥函式
function B(){
setTimeout("console.log('我是回撥函式')", 3000);//模仿耗時操作
}
//呼叫主函式,將函式B傳進去
A(B);
//輸出結果
我是主函式
我是回撥函式
上面的程式碼中,我們先定義了主函式和回撥函式,然後再去呼叫主函式,將回調函式傳進去。
定義主函式的時候,我們讓程式碼先去執行callback()回撥函式,但輸出結果卻是後輸出回撥函式的內容。這就說明了主函式不用等待回撥函式執行完,可以接著執行自己的程式碼。所以一般回撥函式都用在耗時操作上面。比如ajax請求,比如處理檔案等。