我想做的只是听child_added事件只接收最后一个孩子。 我们的想法是启动一个角度应用程序(appA),将ref创建到列表然后等待。
从其他应用程序(appB),我可以在该列表中添加项目。
我希望appB对appB添加的项目做出一次反应
this.itemsRef = this.db.list('gpsAlerts');
this.itemsRef.snapshotChanges(['child_added'])
.subscribe(actions => {
actions.forEach(action => {
console.log(action.type);
console.log(action.key);
console.log(action.payload.val());
});
});
但是我已经收到appA发布时列表中的所有项目。 而且,当我从appB添加项目时,该方法被多次调用。 我希望能够获得最后一项。
我有什么想法可以做到吗?
非常感谢!
答案 0 :(得分:0)
由于您订阅了snapshotChanges
,如果您不希望多次调用它,则可以使用RxJS debounceTime()
。
所以在你的情况下,它看起来像:
...
import 'rxjs/add/operator/debounceTime';
...
this.itemsRef.snapshotChanges(['child_added'])
.debounceTime(500)
.subscribe(actions => {
actions.forEach(action => {
console.log(action.type);
console.log(action.key);
console.log(action.payload.val());
});
});
然后subscribe
的范围将仅在最后一次通话后500ms解释。