簡體   English   中英

RxJS5 與延遲 observable 組合的高級示例

[英]Advanced example of RxJS5 combination with delayed observable

嘿,我遇到了 RxJS 組合運算符的問題......

這是示例對象:

const userData = {
        dbKeyPath: 'www.example.com/getDbKey',
        users:[
            {name:'name1'},
            {name:'name2'},
            {name:'name3'}
        ]
    }

從他們那里觀察:

const userDataStream  = Rx.Observable.of(userData)
const dbKeyStream : string = this.userDataStream.mergeMap(_userData => getDbKey(_userData.dbKeyPath))
const userStream = this.userDataStream.pluck('users').mergeMap(_users=>Rx.Observable.from(_users))

我的預期結果是帶有組合觀察值的流:

[user[0],dbKey],[user[1],dbKey],[user[2],dbKey]... 

它與withLatestFrom操作符配合得很好:

const result = userStream.withLatestFrom(dbKeyStream) // [user, dbkey]

但是,我怎么能歸檔相同的結果,當我申請.delay()運營商dbKeyStream

我建議將mergeMap 重載與 selectorFunc 一起使用

 const userData = { dbKeyPath: 'www.example.com/getDbKey', users:[ {name:'name1'}, {name:'name2'}, {name:'name3'} ] }; function getDbKey(path) { return Rx.Observable.of('the-db-key:'+path) .do(() => console.log('fetching db key for path: '+ path)) .delay(1000); } const userDataStream = Rx.Observable.of(userData) .mergeMap( _userData => getDbKey(_userData.dbKeyPath), (_userData, dbKey) => _userData.users.map(_usr => ({ user: _usr, dbKey })) ) .subscribe(console.log);
 <script src="https://cdnjs.cloudflare.com/ajax/libs/rxjs/5.0.3/Rx.js"></script>

這使您可以根據需要將輸入對象和每個輸出值組合在一起。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM