gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 15:36:49 24 4
gpt4 key购买 nike

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

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

参见 jsFiddle

关于javascript - Bacon.js 在另一个 EventStream 触发时重新启动缓冲,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27472851/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com