我有一個二維數組BehaviorSubject<number>s
。出於調試目的,我希望一旦所有數組單元都發出值,就以格式化的方式寫入值。所以我寫了這個:Observable.zip不會調用subscribe.next,如果源以數組形式給出
Observable.zip(universe.map(row => Observable.zip(row)))
.takeUntil(stopper)
.subscribe(u =>
console.log(`[\n\t[${u.map(r => r.toString()).join("],\n\t[")}]\n]`))
沒有寫。而且這已經行不通了:
Observable.zip(universe[0])
.takeUntil(stopper)
.subscribe(u => console.log(`1[${u.toString()}]`))
但這些工作之後(該數組有5列):
Observable.zip(universe[0][0], universe[0][1], universe[0][2], universe[0][3], universe[0][4])
.takeUntil(stopper)
.subscribe(u => console.log(`2[${u.toString()}]`))
Observable.zip(Observable.zip(Observable.zip(Observable.zip(universe[0][0], universe[0][1]), universe[0][2]), universe[0][3]), universe[0][4])
.takeUntil(stopper)
.subscribe(u => console.log(`3[${u.toString()}]`))
而且我已經考慮.zipAll()運算符,但沒有文件吧。
這可能是Observable.zip()代碼中的一個錯誤,因爲它在代碼輔助中顯示ArrayLike<BehaviorSubject<number>>
作爲可能的參數類型。
那麼,有沒有其他辦法讓這個功能?我怎樣才能得到一次寫下來所有的值被重新分配,數組值不知道過程的實際尺寸是多少?
謝謝你的提示前面回答。 univer的定義是這樣的:'let universe:BehaviorSubject [] []'。關於錯誤的參數沒有任何編譯或運行時錯誤。我會嘗試使用apply()或call()來滿足我的需求。 –
koducu
我已經在zip.d.ts中找到了這個:'export declare function zipStatic(array:ObservableInput []):Observable ' –
koducu
@koducu實際上你應該只關心'zipProto',你可以在這裏看到https:/ /github.com/ReactiveX/rxjs/blob/master/src/add/operator/zip.ts和https://github.com/ReactiveX/rxjs/blob/master/src/operator/zip。ts#L13 – martin