1、什么是回调函数
***你定义的
*你没有调
*但是最终执行了(某个时刻【定时器】或者某个条件下【按钮点击事件】)
2、常见的回调函数=====》【this指向什么】
***Dom 事件回调函数======》【指向发生事件的dom元素,用户操作】
*定时器回调函数====》【指向window】
*AJAX请求回调函数(后面讲)
*生命周期回调函数(后面讲)
document.getElementById('btn').onclick=function(){//dom事件回调函数
alert(this.innerHTML)
};
// 定时器
// 超时定时器
setTimeout(function(){//定时器回调函数
alert("到点了")
},2000)
// 循环定时器
回调函数通常和应用处于同一抽象层(因为传入什么样的回调函数是在应用级别决定的)。回调函数就成了一个高级调用底层,底层再回调高层的过程。
回调不仅仅用在应用和库之间。
中间函数和回调函数是回调的两个必要部分,还有一个是中间函数的调用者【起始函数】。
回调函数实际上有两种:阻塞式回调和延迟式回调。
阻塞式:回调函数的调用一定发生在起始函数返回之前;
延迟式:回调函数的调用有可能是在起始函数返回之后。涉及多线程?
一个故事说:
你到一个商店买东西,刚好你要的东西没有货,于是你在店员那里留下了你的电话,过了几天店里有货了,店员就打了你的电话,然后你接到电话后就到店里去取了货。在这个例子里,你的电话号码就叫回调函数,你把电话留给店员就叫登记回调函数,店里后来有货了叫做触发了回调关联的事件,店员给你打电话叫做调用回调函数,你到店里去取货叫做响应回调事件。回答完毕。
硬件中断就是你一家人正在埋锅造饭 然后你突然被请去喝茶了
function openFile(filePath,callback){
alert('start opening file in'+filePath);
callback();//when finished,execute callback()
}
function writeToFile(){
alert('i'm now writing file');
}
openFile('c://test.csv',writeToFile);
回调的优势:异步回调。
回调函数就是作为另一个函数的形参出现的。