Javascript 如果我设置“的话会发生什么?”;“听一次”;为同一事件触发多次

Javascript 如果我设置“的话会发生什么?”;“听一次”;为同一事件触发多次,javascript,jquery,backbone.js,Javascript,Jquery,Backbone.js,使用主干时,如果我在视图中多次设置同一个侦听器(使用listenToOnce),它是为同一事件创建多个一次性侦听器,还是只覆盖一个 eventThatMightHappenMultipleTimes: function () { this.listenToOnce(this, 'someEvent', this.someEventHandler); }, ... foo: function () { this.trigger('someEvent'); } 我想确保我没有留

使用主干时,如果我在视图中多次设置同一个侦听器(使用
listenToOnce
),它是为同一事件创建多个一次性侦听器,还是只覆盖一个

eventThatMightHappenMultipleTimes: function () {
    this.listenToOnce(this, 'someEvent', this.someEventHandler);
},

...

foo: function () {
    this.trigger('someEvent');
}

我想确保我没有留下任何无用的侦听器。

是的,它多次创建同一个侦听器。您可以轻松地测试它:

var SomeView = Backbone.View.extend({
  initialize: function() {
    this.listenToOnce(this, 'someEvent ', this.logEvent);
    this.listenToOnce(this, 'someEvent ', this.logEvent);
    this.listenToOnce(this, 'someEvent ', this.logEvent);
    this.listenToOnce(this, 'someEvent ', this.logEvent);
  },
  logEvent: function() {
    console.log("'someEvent' has been fired!");
  }
});

var view = new SomeView();
view.trigger('someEvent');

这里是。

是的,它多次创建同一个侦听器。您可以轻松地测试它:

var SomeView = Backbone.View.extend({
  initialize: function() {
    this.listenToOnce(this, 'someEvent ', this.logEvent);
    this.listenToOnce(this, 'someEvent ', this.logEvent);
    this.listenToOnce(this, 'someEvent ', this.logEvent);
    this.listenToOnce(this, 'someEvent ', this.logEvent);
  },
  logEvent: function() {
    console.log("'someEvent' has been fired!");
  }
});

var view = new SomeView();
view.trigger('someEvent');

这里是。

是的,它将为同一事件删除多个一次性侦听器。

是的,它将为同一事件删除多个一次性侦听器