私がしようとしているのは、これらのイベント間の時間が短い場合、キーボードイベントの数を取得することです。 それは正しいアプローチではないので、私はまだ同じ場所にいます。RxJS - バッファを手動で出力する方法/バッファ内の要素を表示する方法
まずは、私が興味を持ったすべてのイベントを捕まえるために、フィルターを使って簡単なストリームを作りました。次に、セカンドストリームとグループ化されたイベントをペアにして、タイムスタンプを測定できます。それはかなり良いのですが、イベントの数が偶数であるようです - この期間が過ぎると、何かがバッファに入っているかどうかをチェックする必要があり、そこにあればそれを私の文字列に追加する必要があります。
コード:
const timeToWait : number = 500;
const keyDigitsUp$ = Observable.fromEvent(document, "keyup")
.filter((event:any) => {return ((event.keyCode>=48 && event.keyCode <=57) ||
(event.keyCode>=96 && event.keyCode <=106))});
let bufferedEvents = Observable.from(keyDigitsUp$).bufferCount(2);
let numbers : string = "";
bufferedEvents.subscribe((eventArray) => {
if (eventArray[1].timeStamp - eventArray[0].timeStamp <= timeToWait)
{
numbers+=eventArray[0].key + eventArray[1].key;
}
else
{
numbers="";
}
});
は、この概念の作品を作るためにどのような方法がありますか?それとも、私が逃しているアプローチがずっとあるかもしれません。私も他のコンセプトを作ったが、同様の結果を出していた。私はもちろん非反応的な方法で動作させることができますし、メインストリームにサブスクライブする - 最後のイベントが存在する場合はそれを次のように比較するよりも、私は反応的なプログラミングを勉強しようとしているので、私はできるだけ反応的です。
明確化のために:最初にフレームを構築し、その時間フレームでキャプチャされたイベントに対してテストするか、2つのイベントを常にグループ化し、2つのイベントがtimeToWait '?固定時間枠に対してテストしたい場合は、これを見てください:https://jsfiddle.net/bbnprgmr/ – dotcs
応答のためのThxルカ。ここでの私の目標は、それらの間のtimeStampが指定されていないイベントをキャプチャすることです。このように動作するはずです。私はキーボードの数字を押します。私は別のものを押すために500msを持っています。そうでなければ数字で文字列を出し、既存の文字列を消去します。私が時間(500ms)で別の数字を押すたびに、別の時間(この場合500ms)のバッファ時間をリセットする必要があります。時間とグループのバッファリングが混在している – 5k7