如何按顺序执行 jQuery 函数

how to execute jquery functions in a order?

本文关键字:jQuery 函数 执行 顺序 何按      更新时间:2023-09-26

正如标题所说,如何在 Jquery 中维护/控制函数的执行顺序?我知道我们可以通过addEventListener建立许多事件处理程序,但不能保证它们的执行顺序。让我引用

请注意,即使处理程序按其顺序触发 已经建立,这个顺序不是标准保证的!测试 此代码从未观察到除 建立,但编写依赖于 此顺序。始终注意在 元素可能会以随机顺序触发。

Manning Jquery in Action 2nd edition

此外,我们可以诱使 jquery (AFAIK) 使用queue()方法以特定顺序执行处理程序,并调用 dequeue() 方法以按照创建队列时定义的顺序调用该队列中的方法。但这不是一个永久的解决方案,因为尽管取消排队确实按定义的顺序执行它们,但在执行后也会将它们从队列中删除。所以,这是一个一次性的解决方案,一旦我们完成了队列,顺序(为此我们首先创建了队列!)就消失了。

所以,我想知道,是否有解决方法或解决方案?如果是这样,这是否取决于我们的要求?比如处理点击事件,或者通过使用 ajax 加载来加载异步数据?

"我知道我们可以通过addEventListener建立许多事件处理程序 ,但不能保证它们的执行顺序。

对于与 addEventListener() 绑定的事件处理程序,不保证执行顺序,但对于与 jQuery 绑定的事件处理程序,执行顺序绝对有保证的。jQuery按照绑定的顺序调用处理程序。

这在jQuery文档中的粗体文本中并不是很明显,但如果你足够仔细地看,它在那里。从.on()方法doco:

(绑定到元素的事件处理程序的调用顺序与绑定它们的顺序相同。

或者从.bind()方法更详细地

当事件到达元素时,将触发绑定到该元素的事件类型的所有处理程序。如果注册了多个处理程序,它们将始终按绑定顺序执行。执行完所有处理程序后,事件将沿着正常的事件传播路径继续。

我可以使用回调函数并在这些函数中处理事件。

function helloWorld(hello,callback)
{
   //does something here with hello 
   callback(); //calls the callback function for final execution
}
helloWorld("world",alertUser);
function alertUser(){
  alert("I am done with this function");
}

因此,如果我理解了您的问题,那么我会做类似上述的事情。

如果需要按特定顺序执行代码,为什么要使用多个事件处理程序?

如果您使用一个事件处理程序按所需的顺序执行多个函数调用,它通常会导致更易于维护和明显的代码。