Observable.of
ve Observable.from
arasındaki bağımsız değişkenler mi? Function.prototype.call
ve Function.prototype.apply
gibi?RxJs Gözden geçirilebilir vs
Observable.of(1,2,3).subscribe(() => {})
Observable.from([1,2,3]).subscribe(() => {})
Observable.of
ve Observable.from
arasındaki bağımsız değişkenler mi? Function.prototype.call
ve Function.prototype.apply
gibi?RxJs Gözden geçirilebilir vs
Observable.of(1,2,3).subscribe(() => {})
Observable.from([1,2,3]).subscribe(() => {})
of
ve from
arasındaki farkı dikkat etmek önemlidir:
Observable.of([1, 2, 3]).subscribe(x => console.log(x));
kerede bütün dizi basacaktır. Öte yandan
,Observable.from([1, 2, 3]).subscribe(x => console.log(x));
davranış aynıdır, ancak karakter düzeyinde dizeleri için 1.
tarafından elemanlarını 1 yazdırır.
Tam olarak değil. Bir dizi Observable.from
geçirirken, Observable.of
arasındaki tek fark, bağımsız değişkenlerin geçirilme şeklidir.
Ancak Observable.from
bir abone olunabilen bir amacı, bir Promise, gözlenebilir bir benzeri, bir dizi, bir iterable veya bir dizi benzeri bir nesne
bir argument kabul edecek
Observable.of
için benzer bir davranış yoktur - her zaman yalnızca değerleri kabul eder ve dönüştürme gerçekleştirmez. (Dizeleri dahil), bir dizi benzer bir yapıya geçerken
Başka ilginç bir gerçek de Gözlemlenebilir.of ([]) abone olduğunuzda boş bir dizi olacaktır. Observable.from ([]) 'a abone olduğunuzda herhangi bir değer alamayacaksınız.
Bu, switchmap ile ardışık bir tasarruf yaptığınızda önemlidir. Örn: o
.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 bölümünde data.length = 0, yukarıdaki kodu Observable.of ([]) dönen ve eğer yorum kaydetmek gider. Ama onu Observable.from ([]) ile değiştirirseniz, sonraki yöntemler aranmayacaktır.
ne Observable.of (1, 2, 3) .subscribe (x => console.log (x)); – xiaoke
@xiaoke Kesinlikle 3 ayrı emisyon var (1, sonra 2, sonra 3). –