是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
沒有類似的行爲 - 它總是隻接受值並且不執行任何轉換。
另一個有趣的事實是當您訂閱它時,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)。 –