In ionic 2,(和angularfire2@4.0.0-rc.0,firebase@3.9.0) 我试过这段代码,但完整的功能不起作用!
constructor(public af: AngularFireDatabase, ...) {
this.temp = af.list('/myTest').subscribe(data => {
... // my tastks
}, error => {
console.log(error);
}, () => {
console.log("done!"); // I can't see this output!
});
}
我已经尝试了很多次,但我看不到“完成”。
在另一个函数中,我尝试了这个,但结果与第一个相同。
console.log(this.temp.closed); // false
this.temp.unsubscribe()
console.log(this.temp.closed); // true
,,我能做什么..?
答案 0 :(得分:0)
AngularFire list
和object
可观察量未完成。他们的内部Firebase refs保持连接状态,侦听数据库的更改。
如果您希望在收到第一个值后完成列表,可以使用first
运算符:
import "rxjs/add/operator/first";
constructor(public af: AngularFireDatabase, ...) {
this.temp = af.list('/myTest')
.first()
.subscribe(data => {
... // my tastks
}, error => {
console.log(error);
}, () => {
console.log("done!");
});
}
请注意,取消订阅时不会调用完整的处理程序。当observable完成时调用它们。
如果您希望在完成或取消订阅时调用回调,则可以改为使用finally
运算符:
import "rxjs/add/operator/finally";
constructor(public af: AngularFireDatabase, ...) {
this.temp = af.list('/myTest')
.finally(() => {
console.log("done!");
})
.subscribe(data => {
... // my tastks
}, error => {
console.log(error);
});
}