我理解Observable
是一个动态对象,随着时间的推移而变化。但是,我希望创建一个函数,它只返回一个可观察的快照。
我有以下功能,使用AngularFire2
并返回Observable
。
import { Observable } from 'rxjs/Observable';
findMessages(chatItem: any): Observable<any[]> {
return this.af.database.list('/message/', {
query: {
orderByChild: 'negativtimestamp'
}
}).map(items => {
const filtered = items.filter(
item => ((item.memberId1 === chatItem.memberId1 && item.memberId2 === chatItem.memberId2)
|| (item.memberId1 === chatItem.memberId2 && item.memberId2 === chatItem.memberId1))
);
return filtered;
});
}
这非常有效,如果我显示此列表,它会在添加或删除项目时动态更新。
问题
如何调用此函数,并将Observable
转换为静态数组项?
我看了here并试图将他们的例子改装成我的情况,但似乎无法这样做。
任何帮助表示感谢。
答案 0 :(得分:1)
您在致电职务时需要订阅Observable
。实际上,您无法从Promise
或Observable
返回任何内容,因为它们是异步的。所以你需要获得链并在那里使用你的变量。
findMessages(char).subscribe((data) => {
// it is the success function. Data is the one returned from the map
// yourVariable = data;
});