如何调用 Observable.complete 回调函数?它不起作用
How I can call Observable.complete callback function? It doesn't work
在离子 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!
});
}
我已经试了很多次了,还是看不到"done"。
在另一个函数中,我尝试了这个,但结果与第一个相同。
console.log(this.temp.closed); // false
this.temp.unsubscribe()
console.log(this.temp.closed); // true
, 我能做什么..?
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!");
});
}
请注意,取消订阅时不会调用完整的处理程序。它们在可观察对象完成时被调用。
如果您希望在完成或取消订阅时调用回调,您可以改用 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);
});
}
在离子 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!
});
}
我已经试了很多次了,还是看不到"done"。
在另一个函数中,我尝试了这个,但结果与第一个相同。
console.log(this.temp.closed); // false
this.temp.unsubscribe()
console.log(this.temp.closed); // true
, 我能做什么..?
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!");
});
}
请注意,取消订阅时不会调用完整的处理程序。它们在可观察对象完成时被调用。
如果您希望在完成或取消订阅时调用回调,您可以改用 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);
});
}