Callback(回調)其實跟一般函式沒什麼不同,差別在於被呼叫執行的時機。而一般來說函式先呼叫的會先執行,像是這個例子
function a() {
console.log('a');
}
function b() {
console.log('b');
}
a();
b();
//結果為:
//a
//b
但是若a()執行時間比b()來的久,b()都跑完了a()還沒跑完,就會像是這樣:
function a() {
setTimeout(function(){
console.log('a');
},1000);
}
function b() {
console.log('b');
}
a();
b();
//結果為:
//b
//a
所以用這個特性把b()傳進去a(),等待a()執行完之後再執行b(),就會是正確順序
function a(callback) {
setTimeout(function(){
console.log('a');
callback();
},1000)
}
function b() {
console.log('b');
}
a(b); //把b()傳入a();
//結果為:
//a
//b