回調函數,就是把一個函數作爲參數傳給另一個函數,在主函數執行完畢後,再去執行這一個函數。
在mdn的解釋:A callback function is a function passed into another function as an argument, which is then invoked inside the outer function to complete some kind of routine or action.
作爲回調函數,一般都是比較耗時的,常見的ajax請求就是其一。
這裏引用下“我的老婆是校花”的例子:
//定義主函數,回調函數作爲參數
function A(callback) {
callback();
console.log('我是主函數');
}
//定義回調函數
function B(){
setTimeout("console.log('我是回調函數')", 3000);//模仿耗時操作
}
//調用主函數,將函數B傳進去
A(B);
//輸出結果
我是主函數
我是回調函數
此外我發現,在廖雪峯老師的ajax教程中,
request.onreadystatechange = function () { // 狀態發生變化時,函數被回調
if (request.readyState === 4) { // 成功完成
// 判斷響應結果:
if (request.status === 200) {
// 成功,通過responseText拿到響應的文本:
return success(request.responseText);
} else {
// 失敗,根據響應碼判斷失敗原因:
return fail(request.status);
}
} else {
// HTTP請求還在繼續...
}
}
這樣也屬於函數的回調。這裏的function應該是被當作是參數。