1. 程式人生 > >【轉載】鉤子函式與回撥函式

【轉載】鉤子函式與回撥函式

在訊息處理機制中必不可少的一組CP,即回撥和鉤子。

鉤子的概念源於Windows的訊息處理機制,通過設定鉤子,應用程式可以對所有的訊息事件進行攔截,然後執行鉤子函式,對訊息進行想要的處理方式。

接下來是一段js程式碼,主要用於給btn設定點選的鉤子函式。

let btn = document.getElementById("btn");
btn.onclick = () => {
console.log("i'm a hook");
}

鉤子是在捕獲訊息的時候立即執行鉤子函式。

下面是一段給btn新增click的監聽器。

btn.addEventListener("click",() =>{
console.log(this.onclick);//undefined
});

這是給btn綁定了一個監聽器,後面那個函式是它的回撥函式,因為訊息捕獲的過程我們並不能參與,而在捕獲執行完畢的時候,回撥函式才會執行,我們可以把對訊息的處理寫在回撥函式裡。

js由於自身的特殊性(單執行緒),因而在程式碼裡充滿各式各樣的非同步操作,因此回撥函式也是鋪天蓋地,上面的兩段程式碼都是非同步的。

回撥函式和鉤子函式的區別
根本上,他們都是為了捕獲訊息而生的,但是鉤子函式在捕獲訊息的第一時間就會執行,而回調函式是在整個捕獲過程結束時,最後一個被執行的。

回撥函式其實就是呼叫者把回撥函式的函式指標傳遞給呼叫函式,當呼叫函式執行完畢時,通過函式指標來呼叫回撥函式。