创建将在第一次触发后自动执行回调的事件侦听器

Create event listener that will automatically execute callbacks after first fire

本文关键字:执行 回调 侦听器 事件 第一次 创建      更新时间:2023-09-26

我想创建一个一次性事件侦听器,它将在事件第一次触发后立即执行回调。

main.js: (loaded first thing)
    $(document).one('plugins_loaded', displayMenu);
plugins.js: (loaded some time after main.js)
    $(document).trigger('plugins_loaded');
checkout.js: (loaded asynchronously or immediately after main.js)
    $(document).one('plugins_loaded', displayCart);

我希望displayCart立即执行,如果plugins_loaded事件之前已经触发,如果没有,那么displayCart应该在displayMenu之后调用,当plugins_loaded事件触发时。

您要找的是

  • 一个承诺,使用$.Deferred
  • 创建
  • 带有oncememory标志的$.Callbacks列表。

存储在某个全局变量中,最好存储在应用程序对象的命名空间中。你只需要初始化它一次,然后你可以随时随地添加回调,并在以后的某个时候触发它们。

您不能真正使用在$(document)上触发的自定义事件,因为过去的事件是不可观察的