在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
常见的异步场景编程语言