Observable.of
とObservable.from
の引数の形式は唯一の違いはありますか? Function.prototype.call
とFunction.prototype.apply
のように?RxJs vsからの見方
Observable.of(1,2,3).subscribe(() => {})
Observable.from([1,2,3]).subscribe(() => {})
Observable.of
とObservable.from
の引数の形式は唯一の違いはありますか? Function.prototype.call
とFunction.prototype.apply
のように?RxJs vsからの見方
Observable.of(1,2,3).subscribe(() => {})
Observable.from([1,2,3]).subscribe(() => {})
はof
とfrom
との間の差を注意することが重要である:
Observable.of([1, 2, 3]).subscribe(x => console.log(x));
一度にアレイ全体を印刷することになります。一方
、
Observable.from([1, 2, 3]).subscribe(x => console.log(x));
は挙動は同じであるが、文字レベルでの文字列の1
により要素1を印刷します。
Observable.from
に配列を渡すとき、それとObservable.of
の唯一の違いは、引数が渡される方法です。
しかし、Observable.from
はサブスクライブオブジェクト、プロミス、観測状、アレイ、反復可能またはアレイ状の物体が
あるargument受け入れます
Observable.of
の場合と同様の動作はありません。常に値のみを受け入れ、変換を実行しません。 (文字列を含む)アレイ状の構造を通過する際
もう1つの興味深い事実は、Observable.of([])は、購読すると空の配列になります。 Observable.from([])を購読したときには、値は取得されません。
これは、switchmapで連続して保存する場合に重要です。 例:
.do((data) => {
this.jobService.save$.next(this.job.id);
})
.switchMap(() => this.jobService.addSites(this.job.id, this.sites)
.flatMap((data) => {
if (data.length > 0) {
// get observables for saving
return Observable.forkJoin(jobSiteObservables);
} else {
**return Observable.of([]);**
}
})).do((result) => {
// ..
})
.switchMap(() => this.saveComments())
....
addSiteセクションにdata.length = 0であれば、上記のコードはObservable.of([])を返すと、次にコメントを保存するために進みます。しかし、Observable.from([])で置き換えると、後続のメソッドは呼び出されません。
何Observable.of(1、2、3).subscribe場合(X =>にconsole.log(X)); – xiaoke
@xiaokeそれでは、必ず3つの別々の排出物(1、2、そして3)です。 –