
百科:回調(diào)函數(shù)
回調(diào)函數(shù)就是一個通過函數(shù)指針調(diào)用的函數(shù)。如果你把函數(shù)的指針(地址)作為參數(shù)傳遞給另一個函數(shù),當這個指針被用為調(diào)用它所指向的函數(shù)時,我們就說這是回調(diào)函數(shù)?;卣{(diào)函數(shù)不是由該函數(shù)的實現(xiàn)方直接調(diào)用,而是在特定的事件或條件發(fā)生時由另外的一方調(diào)用的,用于對該事件或條件進行響應。
因此,回調(diào)本質(zhì)上是一種設(shè)計模式,并且jQuery(包括其他框架)的設(shè)計原則遵循了這個模式。
在JavaScript中,回調(diào)函數(shù)具體的定義為:函數(shù)A作為參數(shù)(函數(shù)引用)傳遞到另一個函數(shù)B中,并且這個函數(shù)B執(zhí)行函數(shù)A。我們就說函數(shù)A叫做回調(diào)函數(shù)。如果沒有名稱(函數(shù)表達式),就叫做匿名回調(diào)函數(shù)。
因此callback 不一定用于異步,一般同步(阻塞)的場景下也經(jīng)常用到回調(diào),比如要求執(zhí)行某些操作后執(zhí)行回調(diào)函數(shù)。
例子
一個同步(阻塞)中使用回調(diào)的例子,目的是在func1代碼執(zhí)行完成后執(zhí)行func2。
var func1=function(callback){
? ? //do something.
? ? (callback && typeof(callback) === "function") && callback();
}
func1(func2);
? ? var func2=function(){
}
來來來,這個鏈接寫得好!http://www.bloggeng.com/archives/331