Jquery 如何在自定义事件中使用延迟

Jquery 如何在自定义事件中使用延迟,jquery,asynchronous,callback,deferred,custom-event,Jquery,Asynchronous,Callback,Deferred,Custom Event,我正在写一个插件,它发出激活和激活的事件。我只想在激活的所有事件处理程序都执行时触发激活的事件。我知道$.trigger会同步调用事件处理程序,但问题是我的事件处理程序中可能有一些异步代码: 例如: $("test").trigger("activating"); $("test").trigger("activated"); $("test").on("activating",function() { $.post("/test",{data:"test"},function()

我正在写一个插件,它发出激活和激活的事件。我只想在激活的所有事件处理程序都执行时触发激活的事件。我知道$.trigger会同步调用事件处理程序,但问题是我的事件处理程序中可能有一些异步代码:

例如:

$("test").trigger("activating");
$("test").trigger("activated");


$("test").on("activating",function()
{
     $.post("/test",{data:"test"},function()
    {
            //dom modifications here
            ////////////////
            //Here I would like to notify that the event handler is finished, like maybe async.js
    }
});
我有一些关于$.Deferred和承诺的线索,但我不知道如何实现它们来解决我的具体问题

这里有人能告诉我答案吗


谢谢

事件侦听器没有任何返回值。除了preventDefault之外,它们不会通过事件向事件源发回任何信号。这样,在ajax调用完成时将触发激活的事件。如果事件处理程序中有异步代码,那么如果没有这些事件处理程序参与解决方案,则无法解决此问题。如果他们有异步代码,他们至少要做一些事情,比如注册一个承诺,以指示何时完成。奇怪的是,甚至不到一个小时,就有人问了同样的问题:谢谢,我读了那篇文章,它似乎回答了我的问题。我将很快对它进行测试,如果测试成功,我将重新发布它并将其标记为解决方案