我想知道是否有任何方法可以停止回调本身内部的回调。我已经尝试过使用ref.off()方法将其停止,如下所示,但它仍将继续运行。有什么建议吗?
ref.orderByChild('t').startAt(time.getTime()).on('child_added', function (snapshot) {
const d = snapshot.val();
const x = Math.round(d.x * 100).toString();
const y = Math.round(d.y * 100).toString();
if (that.selectedEnd && d.t > that.selectedEnd.getTime()) {
snapshot.ref.off('child_added');
console.log('STOP');
} else {
....
}
});
答案 0 :(得分:0)
根据on()
的API文档:
返回功能
所提供的回调函数未经修改就返回。这只是 为了方便起见,如果您要将内联函数传递给on(),但是 存储回调函数,以便以后传递给off()。
因此,您可以将其返回值传递给off()
,在您调用on()
的同一查询对象上调用:
const query = ref.orderByChild('t').startAt(time.getTime());
const listener = query.on('child_added', function (snapshot) {
...
query.off('child_added', listener);
});