簡體   English   中英

RXJS可觀察到的未在flatMap上完成(Observable :: from)

[英]RXJS observable not completing on flatMap(Observable::from)

我想做的是使用流從mongodb中提取一些數據,對數據進行一些操作,使用傳入數據的鍵在mongo中進行另一個查詢,然后將數據聯接。

實際的代碼要復雜得多,但我將用更簡單的示例進行說明。

我的問題是,完成時永遠不會被解雇,我想這是因為外部的可觀察對象永遠不會完成。

const o$ = RxNode.fromStream(getDataFromMongo(), 'end'))
    .filter(doSomeFiltering)
    .bufferCount(100)
    .flatMap(bufferedData => {
        let ids = _.map(bufferedData, 'id');

        return RxNode.fromStream(getMoreDataFromMongodb(ids))
            .reduce(createMapIdObject(), {})
            .flatMap(createdMap => {  //because i get here, outer never complets
                return Observable.from(bufferedData)
                .map(item => ({
                    id: item.id,
                    size: createdMap[item.id].size
                }));
            });
    })
    .subscribe(
        c => console.log(c),
        err => console.log(err),
        () => console.log('COMPLETE') // never happens
    );

我怎樣才能得到完整的射擊? 還是有更好的方法來完成我要達到的目標?

如果我從嵌套的flatMap內部將Observable.from .finally(() => console.log(done)鏈接.finally(() => console.log(done)被觸發,因此內部observable可以完成,但是外部沒有。

您可以在訂閱前簡單地添加take(1)

暫無
暫無

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

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