Javascript Bacon.js在另一个EventStream触发时重新启动缓冲
我正在尝试使用Bacon.js制作一个简单的画布绘图应用程序。它应该允许通过像这样单击鼠标来选择起点和终点来绘制一条线Javascript Bacon.js在另一个EventStream触发时重新启动缓冲,javascript,coffeescript,bacon.js,Javascript,Coffeescript,Bacon.js,我正在尝试使用Bacon.js制作一个简单的画布绘图应用程序。它应该允许通过像这样单击鼠标来选择起点和终点来绘制一条线 points = paper.asEventStream('click') .map((e) -> x: e.pageX, y: e.pageY) .bufferWithCount(2) 到目前为止还不错。现在,它应该允许通过单击Esc取消起点选择 cancel = doc.asEventStream('keypress') .map((e) -> e
points = paper.asEventStream('click')
.map((e) -> x: e.pageX, y: e.pageY)
.bufferWithCount(2)
到目前为止还不错。现在,它应该允许通过单击Esc取消起点选择
cancel = doc.asEventStream('keypress')
.map((e) -> e.keyCode)
.filter((key) -> key is 27)
.map(true)
什么是巴肯式的重新启动缓冲的方式?UPD:到目前为止,我的实现看起来很糟糕
points
.merge(cancel)
.buffer(undefined, (buffer) ->
values = buffer.values
if values.some((val) -> val is true) then values.length = 0
else if values.length is 2 then buffer.flush())
您可以从“取消”开始缓冲:
var filteredPairs = cancel.startWith(true).flatMapLatest(function() {
return points.bufferWithCount(2)
})
看