2013-07-23 32 views
1

我見過callback()概念在jQuery插件中使用了很多,我開始認爲觸發自定義事件可能是更好的選擇。爲什麼在jQuery中使用回調函數來觸發事件?

jQuery有一個觸發內置機制('A_CUSTOM_EVENT'),爲什麼插件作者不直接觸發'COMPLETE_EVENT'而不是堅持我們傳遞一個回調函數來處理這個'完整階段'。

尼克

+2

爲什麼不嘗試用兩種方式構建插件並讓我們知道哪一個更有效,更高效和更可靠? – DevlshOne

回答

5

這取決於你想要達到的目的 - 這是一個架構選擇。

基本上,事件範式是開放的,非私人的和持久的。你有一個公衆活動,每個人都可以註冊,而且他們的活動功能基本上都是按照他們希望的頻率調用,直到他們從活動中取消註冊爲止。對經常性事件有意義。

示例:註冊到懸停事件。

回調範式是孤立的,私人的和一次性的。有人調用你的代碼並交出一個私人回調,一旦它被執行,它就會被丟棄。在大多數情況下,可用性是有限的(限於單個時間點)和/或不一定是公開的。

示例:處理ajax響應。

這兩種範例都有優點和缺點。使用一個或另一個取決於您,以及您希望如何使用您的應用程序。

+1

Ajax是一個很好的例子,因爲基礎機制使用事件訂閱模型(onreadystatechange),但是由於ajax響應(事件)在概念上與它的請求耦合在一起,幾乎每個人對ajax的第一個響應就是編寫一個封裝器來轉換它進入回調範例。 – slebetman

相關問題