スロットリングされたエミッションに基づいてバッファリングされたエミッションを作成しようとしています。次RxJs 2に期待されるような作品:rxjsバッファが私のために期待どおりにスロットルで動作しない
.buffer(function() { return clickStream.throttle(250); })
しかし、私は私の地元のプロジェクトでこれを使用しようとしたときには、次のエラーが返されます。ここでは
Uncaught TypeError: You provided '() => clickStream.throttle(250)' where a stream was expected. You can provide an Observable, Promise, Array, or Iterable.
は私ですコード
import Rx from 'rxjs/Rx';
const $button = document.getElementById('button');
const $label = document.getElementById('label');
const clickStream = Rx.Observable.fromEvent($button, 'click');
const doubleClickStream = clickStream
.buffer(() => clickStream.throttle(250))
.map(arr => arr.length)
.filter(len => len === 2)
clickStream.subscribe(x=>console.log(x));
doubleClickStream
.subscribe(() => $label.textContent = 'double click')
//
doubleClickStream
.throttle(1000)
.subscribe(() => $label.textContent = '-')
このライブラリに関する私の現在の知識が十分ではないことを知っています。おそらく、それはrxjsのバージョンに関連しています(実際の例では2.xで、上のコードでは5.xです)。
私としても、それを書き込もうとしました:
.buffer(clickStream.throttle(250))
そしてそれは、ボタンをクリックした後、別の例外が発生しました:
Uncaught TypeError: this.durationSelector is not a function
は、あなたは私がそれはそれで間違って理解するのに役立つことはできますか?
'throttle'の代わりに[throttleTime](http://reactivex.io/rxjs/class/es6/Observable.js~Observable.html#instance-method-throttleTime)を使用してください。 –
.buffer(clickStream.throttleTime 250 ))仕事をする必要があります。 –