javascript中的回調和異步

在js中不少時候一提及回調,印象中立馬就出現了異步的場景,實際上印象中的是異步回調,只是回調中的一種,固然除了異步還有同步。同步回調,提及來老是感受怪怪的,主要是混淆了回調和異步的概念,或是對回調的定義不是很清楚,只不過印象中讓他們等價了callback==async。既然只是名字而,那麼首先要清楚callback和async的定義。javascript

callback回調

在計算機程序設計中,回調函數,或簡稱回調(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

常見的異步場景編程語言

  • 定時函數 setTimeout, setInterval, process.next等
  • on事件監聽,subscribe事件訂閱
  • promise異步編程
相關文章
相關標籤/搜索