我正在阅读Developing Backbone.js Applications

有一个我不理解的关于once()方法的示例。这是jsfiddle。运行它并查看控制台日志。看到它打印两个true



var TodoCounter = { counterA: 0, counterB: 0 };
_.extend(TodoCounter, Backbone.Events);

// Increment counterA, triggering an event
var incrA = function(){
  TodoCounter.counterA += 1;
  TodoCounter.trigger('event'); // ??? What is this for?
};

// Increment counterB
var incrB = function(){
  TodoCounter.counterB += 1;
};

// Use once rather than having to explicitly unbind
// our event listener
TodoCounter.once('event', incrA);
TodoCounter.once('event', incrB);

// Trigger the event once again
TodoCounter.trigger('event');

// Check out output
console.log(TodoCounter.counterA === 1); // true
console.log(TodoCounter.counterB === 1); // true


TodoCounter.trigger('event')中的incrA()有什么作用吗?我删除了它,似乎没有任何区别。

这本书说,对于A和B,它应该只递增一次。我想我明白,除了TodoCounter.trigger('event')中的incrA()

最佳答案

不,您是正确的,它不会做任何事情。我相信这只是说明,当使用once()将回调绑定到事件时,仅触发一次回调。

10-02 12:28