2017-09-29 32 views
1

我试图将2个Observable流与combineLatest组合成1个流。 只有.map()函数不适用于结果流。并且不起作用,我的意思是在下面的例子中没有记录任何内容。另一方面,如果我为.subscribe()函数切换.map()函数,那么一切正常。我的观察对象来自firebase,使用angularfire2库。我还导入了map函数,它可以在其他Observable流上工作。Rxjs:地图方法不会在combineLatest上执行最大

const placeList = this._db.list(URL) 
    .map(this.flattenJSON); 
const placeImages = this._db.list(URL); 
Observable.combineLatest(placeList, placeImages) 
    .map(response => { 
     console.log(response); 
     return response; 
    }); 

有谁知道为什么subscribe功能的工作原理,以及map不?有没有人建议我如何合并2个firebase Observable流并映射这个流。请注意,由angularfire2产生的Observable流不能完成。

+1

您仍然需要订阅observable ...如果没有订阅,您将不会收到通知。 – Catalyst

+1

哦,这很有趣!我尝试在'map'函数之后链接'.subscribe',现在它正在记录!我不知道这一点。感谢您的建议,终于搞清楚了。如果您创建答案,我会接受它 – sjbuysse

+0

完成。谢谢 :) – Catalyst

回答

0

如果您希望它实际得到执行,您应该始终订阅observable。只需在地图后连锁subscribe()

const placeList = this._db.list(URL) 
    .map(this.flattenJSON); 
const placeImages = this._db.list(URL); 
Observable.combineLatest(placeList, placeImages) 
    .map(response => { 
     console.log(response); 
     return response; 
    }) 
    .subscribe();