Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/476.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Bacon.js在另一个EventStream触发时重新启动缓冲_Javascript_Coffeescript_Bacon.js - Fatal编程技术网

Javascript Bacon.js在另一个EventStream触发时重新启动缓冲

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

我正在尝试使用Bacon.js制作一个简单的画布绘图应用程序。它应该允许通过像这样单击鼠标来选择起点和终点来绘制一条线

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)
})