在 Bacon.js 中实现数字微调器

Implement a numeric spinner in Bacon.js

有一个文本字段和两个按钮,(+) 和 (-)。从按钮点击中获取值很简单:

// provided plusStream contains +1 for each (+) click
// and minusStream -1 for each (-) click.
let value = plusStream.merge(minusStream).scan(0, (a, b) => a + b);

问题是,如何处理 directChange 流,它包含文本字段的每个有效更改的数字?

它应该以某种方式改变值。此外,.scan() 应该知道更改,以便下一个按钮单击 addis 或从更新值中减去 1。

我建议你试试 Bacon.update。这可能有效:

Bacon.update(0,
  plusStream, (prev) => prev + 1,
  minusStream, (prev) => prev - 1,
  directChangeStream, (prev, updated) => updated
)