Javascript Observable - 及时获取快照

时间:2017-02-17 06:23:11

标签: javascript rxjs observable

我理解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并试图将他们的例子改装成我的情况,但似乎无法这样做。

任何帮助表示感谢。

1 个答案:

答案 0 :(得分:1)

您在致电职务时需要订阅Observable。实际上,您无法从PromiseObservable返回任何内容,因为它们是异步的。所以你需要获得链并在那里使用你的变量。

findMessages(char).subscribe((data) => {
 // it is the success function. Data is the one returned from the map
 // yourVariable = data;
});