Observablesには適切なユースケースがあると思いますが、オブザーバブルとして実装する方法がわかりません。最も直観的な概念ではありません。 3つの数字があるとします:let a: number, b: number, c: number;
と私はそれらが変化するのを監視したいと思います。 if((a + b + c)/3 === 0)) return true else false
。これらの数値を監視するオブザーバを作成するにはどうすればいいですか?boolean
の値を取得できますか?Observables Basics
答えて
例を示します。技術的に言えば、Subjects
はObservables
あるため、現実の生活aSubject
、bSubject
、およびcSubject
はObservable
規則的であるが、あなたが構築したり、あなたのフレームワークや選択肢から入手どちらかという流れの中など
私のデモでは、私は、BehaviorSubject
Sを使用します。
3
で割っa
、b
、c
の最後の既知の値の和は、0
であるかどうかをチェックセットアップコードの部分は3つのソースストリームを作成し、formulaObservable
。 aSubject.next(1)
は、ある意味では「通常の」JSではa = 1
と多少似ています。主な違いは、.next()
がObservableストリームのでもを作成していることです。
演算子は、n入力観測可能なストリームを見て、それらのnストリームの最後の既知の値の関数を計算する新しいObservableを作成します。
import { Observable, BehaviorSubject } from 'rxjs';
// "Setup"
const aSubject = new BehaviorSubject<number | undefined>(undefined);
const bSubject = new BehaviorSubject<number | undefined>(undefined);
const cSubject = new BehaviorSubject<number | undefined>(undefined);
const formulaObservable = Observable
.combineLatest(
aSubject,
bSubject,
cSubject,
)
.map(values => {
const [a, b, c] = values;
if (a == null || b == null || c == null) {
return Observable.never();
} else {
return (a + b + c)/3 === 0;
}
});
formulaObservable.subscribe(result => console.warn(`Result: ${result}`));
// ---
// "Usage"
aSubject.next(1);
bSubject.next(2);
cSubject.next(1); // a===1, b===2, c===1, formulaObservable==Observable.of(false)
bSubject.next(1); // a===1, b===1, c===1, formulaObservable==Observable.of(true)
希望します。
P.S.インタラクティブRxJsMarblesでプレイして、彼らの動作をよりよく理解できます。色のついたボールはドラッグ可能であることに注意してください。
P.P.S.これは大丈夫な質問ですが、私はあなたのdownvotesは、あなたが研究をしなかったという事実(質問自体にコードが掲載されていない)か、StackOverflowで検索しなかったことから来ていると思います。
@Zachscs yeah、np –
結果の型がObservable
それは良い点です。本質的に 'map'を' filter'と 'map'に分割し、かなり単純化しています。 –
- 1. Angulartics2 Basics
- 2. TimePicker UWP Basics
- 3. ngForで非同期パイプを使用Observables(Observables)(Observables)(角)
- 4. Observables "retryWhen" delay
- 5. ノックアウトJs Observables
- 6. Angular2 Observables - Replay
- 7. Rxjava - hot observables
- 8. Angular2/Nativescript observables
- 9. ForkJoin for multiple observables
- 10. Observablesの結合/マージ
- 11. BehaviourSubjectへのConcat Observables
- 12. Promise.resolve()でもObservables(RxJS5)
- 13. Concat Observables of different types
- 14. switchmapと別のobservables
- 15. Angular2 observablesと約束
- 16. Observables and subscribing angular 2
- 17. JAXB2 Basicsプラグイン - 外部バインディングカスタマイズファイルのschemaLocationに関する問題
- 18. observablesの条件付きチェーン
- 19. フィードバックを伴うObservablesのマージ
- 20. Ionic2、Angular2、HTTPおよびObservables
- 21. Observablesを延期する
- 22. Angular2 observablesをマージする
- 23. Observablesでイベントリスナーをラップする
- 24. observableコレクションとobservablesコレクションのマージ
- 25. Observablesをパイプする方法
- 26. RxJava Observablesがパラレルでない
- 27. reactx PythonでObservablesを要約
- 28. rxjs Observablesを連結する
- 29. rxjs - observablesで検索する
- 30. Angular 2 ObservablesとHttpで 'Undefined'
コメントなしでも下降しているこれらのモンスターは誰ですか? – Zachscs
4つのストリーム(観測値)を定義します。個々の変数ごとに1つ、その値をその式に結合する1つです。自分で学習する場合は、https://www.learnrxjs.io/ –
をチェックしてください。どのように角度に関連していますか? –