在js中不少時候一提及回調,印象中立馬就出現了異步的場景,實際上印象中的是異步回調,只是回調中的一種,固然除了異步還有同步。同步回調,提及來老是感受怪怪的,主要是混淆了回調和異步的概念,或是對回調的定義不是很清楚,只不過印象中讓他們等價了callback==async
。既然只是名字而,那麼首先要清楚callback和async的定義。javascript
在計算機程序設計中,回調函數,或簡稱回調(Callback 即call then back 被主函數調用運算後會返回主函數),是指經過函數參數傳遞到其它代碼中的,某一塊可執行代碼的引用(維基)java
簡單來講,就是將函數A做爲參數傳遞到函數B中,調用函數B時,函數A會被執行,那麼咱們就稱函數A爲回調函數。編程
同步回調promise
function A() {console.log('a')} function B(callback) { console.log('B') callback && typeof callback === 'function' && callback(); } B(A)
異步回調異步
$('#id').click(function() { console.log('clicked') })
因此callback不必定用於異步,通常同步的場景下也常常會用到回調,尤爲想javascript這種函數是一等公民的編程語言,函數最爲參數傳來傳去很常見。同時javascript做爲基於事件的異步編程語言,異步回調也是最多見的用法。async
常見的異步場景編程語言