如果我为同一事件设置 "listenToOnce" 多次触发会发生什么

What happends if I set "listenToOnce" triggers multiple times for the same event

当使用 Backbone 时,如果我在一个视图中多次设置同一个监听器(使用 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');

这里是a working demo on JS Bin.

是的,它会为同一事件创建多个一次性侦听器。http://bit.ly/1EljaXf