我需要了解如何用BaconJS实现目标。我需要有类似这个解决方案的东西(这只是一个例子)但是我想在点击按钮后只调用一次processBus。所以我需要打电话
Templates
仅当单击按钮并且有事件进入globalBus时。 这是我的代码:
console.log((new Date()).getTime());
这是jsfiddle的例子:
我的意思是只有一次,但每次点击按钮后。
这是我想要实现但没有BaconJS的例子 http://jsfiddle.net/Tjdp5/14/
答案 0 :(得分:1)
如果我理解你的意图,你正在寻找一个“任务队列”机制。这是我的建议。
var taskE = Bacon.fromEvent(button1, "click")
// use flatMap to force strict evaluation
.flatMap(function() { return new Date() })
.doLog('task created:')
var processE = Bacon.fromEvent(button2, "click")
taskE
// for each new task, take one "process next task" click
// use flatMapConcat to queue tasks
.flatMapConcat(function(task) { return processE.take(1).map(task) })
.onValue(function(task) {
console.log('task ', task, 'processed at', new Date());
});
这里的工作示例:http://jsfiddle.net/52mb7b36/