一個普通的帶函數(shù)的參數(shù):
function f1(f2){
//處理其他的事情,執(zhí)行f2
f2()
}
回調函數(shù)
$(div).on("click",,function(){})
回調包含同步回調和異步回調。只不過異步回調用的多一些而已。
回來講為什么js是單線程但是還可以進行異步,就是因為瀏覽器的內核是多線程。
js在定制的初期就實現(xiàn)了很多的異步方法,setTimeout,setInterval,ajax等
異步的實現(xiàn)和我們一點關系都沒有,并不是我們自己用原生js寫出來的。
所以異步是:當執(zhí)行到異步函數(shù),瀏覽器自己會新開一個線程,監(jiān)聽請求結果。
另外,這個異步方法中有一個函數(shù),js線程將這個函數(shù)交給瀏覽器開啟的新線程,監(jiān)聽請求結果。
等到請求結果出現(xiàn)時,將這個函數(shù)放到任務列表中。
js線程在執(zhí)行完棧中的代碼后,查看任務列表。---event loop
之前以為是異步回調進行注冊之后,直接將回調的函數(shù)放入事件隊列,其實是異步先瀏覽器單開一個線程進行執(zhí)行,有結果之后再將回調函數(shù)放入事件隊列,等待js線程上的代碼執(zhí)行完畢,執(zhí)行異步回調的函數(shù)。