JavascriptではKefirを使用して、ENTER
がヒットするまですべてのキー入力をキャプチャしたいと思います。これまでのところ、私はbufferWhile
Enterキーが無効なプログラミング方法でヒットするまですべてのキー入力をキャプチャ
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 = "?");
を使用して、これを行うために管理してきましたが、最初私は
var inputValues = Kefir
.fromEvents(document.querySelector('body'), 'keydown')
.scan((acc, y) => acc.concat(y), "");
のように定期的にscan
を使用していたが、その後どのようにI:
ENTER
がヒットしたときにアキュムレータを出力しますか?- アキュムレータを再起動して新しいキーストロークシーケンスを開始しますか?
bufferWhile
を基本的にどのように構成しますか?scan
と1つのストリームを使用していますか?答えはケフィアに関して特に必要はありませんが、FRP擬似コードはこれを行います。
これは 'bufferWhile'で動作しますが、' scan'でも同じことをしたいのですか? – iofjuupasli
@iofjuupasli 'scan'またはそれ以外のもの。私は同じことを達成し、おそらくクラスター化されたキーストロークをキャプチャするためにタイムアウトを追加したいと思います。 –