gpt4 book ai didi

jquery - 什么是 jQuery Hook 和回调?

转载 作者:行者123 更新时间:2023-12-03 22:14:51 29 4
gpt4 key购买 nike

我很难概念化 jQuery 中的回调或 Hook 到底是什么。它们似乎混为一谈,但我不知道它们之间的区别。

据我从其他有关回调的帖子中了解到,例如 this ,回调只是一个函数 A,您将其传递给另一个函数 B,该函数 B 在 B 完成后调用 A。 (这可能是完全错误的,如果是的话请纠正我)。

除了“你应该使用钩子(Hook)/回调”之外,我真的对钩子(Hook)没有任何概念。有些事情让我怀疑他们有那么相似......

最佳答案

您的定义很接近,但还不够。回调是一个函数 A,您将其传递给另一个函数 B(或对象 B),B 将在适当的点调用该函数。

对于某些函数,“适当的点”是在该函数完成之后,正如您所描述的。

许多函数或对象定义了一组可以触发回调的“某些点”或事件。例如,如果您有一个通过 AJAX 定期更新自身的控件,它可能会定义一个在即将更新时发生的事件、一个在更新返回后发生的事件以及一个在显示结果后发生的事件。对于这些事件中的任何一个,您都可以向其传递您的自定义函数,该函数在该事件发生时应调用。

定义的一组可以调用自定义函数的点就是人们所说的“钩子(Hook)”。您可以在它们中将功能挂接到预构建的库中。

编辑添加:

OP 要求提供一个简单的钩子(Hook)示例。

假设我编写了一个函数,它接受用户名列表,旨在遍历该列表,查找每个人的详细信息,并返回填充的人员对象列表。

也许我想让使用我的函数的程序员能够指定当在我的数据库中找不到用户名时应该发生什么。一个程序员可能希望函数出错,另一个程序员可能希望它忽略丢失的示例,另一个程序员可能希望它在不同的数据库中查找,另一个程序员可能希望它构造一个空的 person 对象。

所以我的函数签名可能是这样的

function getPeople( arrayOfUsernames, missingUsernameCallback )

在函数中,每当我遇到在数据中找不到的用户名时,我都会调用

missingUsernameCallback( notFoundUsername );

现在程序员可以调用该函数了

getPeople( ["adam","betty","charlie"], function(name){ alert("Missing username " + name)} );

每当我遇到丢失的用户名时,我都会调用传递给我的函数。

对于更复杂的情况,我可能需要接受包含多个回调函数的对象,因此可以像这样调用它

   getPeople( ["adam","betty","charlie"], 
{startOfListCallback: function(){ alert("I'm starting the list")},
missingUsernameCallback: function(){ alert("Missing username"!)},
endOfListCallback: function(){ alert("I'm at the end of the list") });

等等。可能的回调列表将由函数定义,并且应该位于 API 文档中(以及可以传递到回调中的参数等)。该回调列表就是钩子(Hook)。

关于jquery - 什么是 jQuery Hook 和回调?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6735250/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com