1

ENTERJavascript と Kefir を使用して、ヒットするまですべてのキー入力をキャプチャしたいと思います。これまでのところ、私はbufferWhilelikeを使用してこれを行うことができました

var inputValues = Kefir
  .fromEvents(document.querySelector('body'), 'keydown')
  .bufferWhile(event => event.keyCode!=13);

var result = inputValues.toProperty(() => "");
result
.onValue(x => elm.innerHTML = x.slice(0,-1).map(y => String.fromCharCode(y.keyCode)).join(''))
.onError(() => elm.innerHTML = "?");

scanしかし、最初は通常のように使用したかった

var inputValues = Kefir
  .fromEvents(document.querySelector('body'), 'keydown')
  .scan((acc, y) => acc.concat(y), "");

しかし、どうすればいいですか:

  1. ENTERヒット時にアキュムレータを出力しますか?
  2. アキュムレータを再起動して、新しいキーストローク シーケンスを開始しますか?

基本的に、単一のストリームbufferWhileを使用してどのように構成しますか? scan答えは特に Kefir に関するものである必要はありませんが、FRP 疑似コードであれば何でもかまいません。

4

1 に答える 1