私はGoogleマップイベントからRxJS観測可能ストリームを作成したいと思います。私のようなので、ネイティブブラウザのイベントからこれを行う方法を知っている:カスタムライブラリイベント(Google Mapsイベントなど)をRxJSのObservableストリームに変換するにはどうすればよいですか?
var result = document.getElementById('result');
var source = Rx.Observable.fromEvent(document, 'mousemove');
var subscription = source.subscribe(function (e) {
result.innerHTML = e.clientX + ', ' + e.clientY;
});
mousemove
が.fromEvent()
がハードコーディングされたデフォルトとしてmousemove
認識していることを信じるように私をリードブラウザイベント、です。しかし、カスタムイベントを認識したい場合は、どのように観測可能なストリームを作成できますか?たとえばGoogleマップを見てみましょう:私はパフォーマンスの改善のためのRxJS debounce
を使用できるように
var map = new google.maps.Map(document.getElementById('map'), {
zoom: 4,
center: {lat: -25.363, lng: 131.044}
});
map.addListener('center_changed', function() {
var center = map.getCenter()
console.log(center)
});
私が観察ストリームにこれらのGoogleマップイベントを変換したい理由はあります。そうすればcenter_changed
はバッチでのみ認識されます(2秒間に10回発射するのではなく、同じ2秒間に最後の1回を認識します)。私のジレンマは、そのカスタムGoogleマップイベントを観測可能なストリームに変換しています。おそらく観察可能なものに継続的に追加する簡単な方法がありますが、私の検索ではその方法を見つけられませんでした。
この問題でお時間をいただきありがとうございます。ほんとうにありがとう!