プロパティ値を繰り返し取得して別のプロパティに割り当てることはしたいのですが、RxのObservable
作成はまだ処理されていません。どのようにしてプロパティを常時読み取っているオブザーバブルを作成したり購読したりするにはどうすればいいでしょうか(おそらくタイマーやスロットルで)?メソッドを繰り返し呼び出すobservableを作成します
答えて
スタティックInterval
演算子を使用して、指定された時間間隔で値を繰り返し送信し、次にSelect
オペレータを使用して、ポーリングするオブジェクトのプロパティ値に変換できます。
var objectIWantToPoll = new MyObject();
var objectIWantToSetPropertyOn = new MyObject();
var polledValues = Observable.Interval(TimeSpan.FromSeconds(1))
.Select(_ => objectIWantToPoll.SomeProperty);
polledValues.Subscribe(propertyValue =>
objectIWantToSetPropertyOn.SomeProperty = propertyValue));
いくつかのコンポーネントが変更された値をポーリングするポーリング実装を基本的に求めているようです。オブザーバブルは通常、値を取得するのではなく、(イベント/オブザーバブル/などを介して)プッシュされたオブジェクトに反応するためのものです。おそらく、タイマーのバックグラウンドプロセスを設定し、そのタイマーのTickで操作するだけで十分です。 Observable.IntervalはJames Hayが言及したのと同様に動作します。 Observable.Intervalはディスパッチャスレッドから実行コンテキストを移動することに注意してください。
なぜRxをポーリングの実装に入れようとしていますか?ここで同期しようとしている他の観測可能なデータソースがありますか?
rxは 'プル'ではなく 'プッシュ'であると理解していますが、タイマーよりもポーリングに使用する方が簡単です。おそらく、私はそれを別の方法で見なければならないかもしれません - 私は2次オブジェクトから特定のプロパティではなくObservableを返すことができます。 – Pat
public static IObservable<long> CreateObservableTimerWithAction(this Action actionT, int timeSpan, Control control)
{
var obs = Observable.Create<long>(
observer =>
{
Observable.Interval(TimeSpan.FromMilliseconds(timeSpan))
.DistinctUntilChanged(fg =>control.Text).Subscribe(l => actionT());
return Disposable.Empty;
});
return obs;
}
0R:
public static IObservable<long> CreateObservableTimer<T>(this Action actionT,int timeSpan)
{
var obs= Observable.Create<long>(
observer =>
{
Observable.Interval(TimeSpan.FromMilliseconds(timeSpan))
.DistinctUntilChanged().Subscribe(l => actionT());
return Disposable.Empty;
});
return obs;
}
私は(obs.Dispose())に処分されるまで時間指定の方法は、特定の時間に行く持って、かなり頻繁にこれを使用..
CreateObservableTimer(()=> CheckForDequeues(1)、500);
私は実際に時々長いを使用しますが、時間のほとんどは、ない...
がさえプライオリティキューにスケジューラをチェックするために、このヘルパーを使うので、
- 1. beginBackgroundTaskWithExpirationHandlerを繰り返し呼び出す
- 2. C++:オブジェクトを繰り返して同じメソッドを呼び出す
- 3. メソッドの呼び出しを繰り返す
- 4. クラスを繰り返し呼び出し
- 5. python pilライブラリ呼び出しと繰り返しデータを返すメソッド
- 6. easymockを使って、voidメソッド呼び出しを繰り返しました
- 7. std :: chronoは繰り返しQueryPerformanceFrequencyを呼び出しますか?
- 8. ボタンを押したときにメソッドを繰り返し呼び出す
- 9. 成功するまでajax呼び出しを繰り返す方法
- 10. Reactネイティブコンポーネントは繰り返し呼び出されます。
- 11. viewDidAppearが繰り返し呼び出されます
- 12. react + redux componentdidmount()が繰り返し呼び出されます
- 13. 各関数を繰り返し関数スライスで呼び出す
- 14. NSThreadを繰り返し呼び出す方法は?
- 15. JavaScriptが同じイベントを繰り返し呼び出す
- 16. Excell whileループでサブ呼び出しを繰り返す
- 17. initialize()のハッシュ引数でself.sendを繰り返し呼び出す
- 18. 関数を繰り返し呼び出す
- 19. コンソールでjavascript関数を繰り返し呼び出す方法
- 20. API.AI:同じインテントを繰り返し呼び出す方法
- 21. アンドロイドでAndroidグローバルレイアウトリスナーを繰り返し呼び出す
- 22. std :: future :: getを繰り返し呼び出す
- 23. ローカル変数または繰り返し呼び出し?
- 24. MobX httpでRest APIを呼び出してObservableを返す
- 25. Javascript:繰り返しのない配列内の各オブジェクトの呼び出しメソッド
- 26. WebメソッドへのAJAX呼び出しの繰り返しの遅延
- 27. AsyncStorageは繰り返しの呼び出しを意図しています
- 28. ajaxはjavascript配列を使って繰り返しを呼び出します
- 29. メソッドは呼び出し元メソッドで戻り値を返しますか? c#
- 30. C++は1つの関数を繰り返し呼び出しています
に使用できるが所有するオブジェクトをいプロパティは 'INotifyPropertyChanged'を万一実装しますか?それはこれを解決するよりきれいな方法でしょう。 –
@リチャードいいえ、それはINPCを実装していません。私はそれについて考えましたが、この動作を得るために導入する価値はありません。 – Pat
私は同意しませんが、十分に公正です! –