直接在 on() 回调 Firebase 中使用 off()



假设我有一个完成的操作。比如删除。

var q = ref.child('users').child(targetUserId).child('chat');
q.on('child_added', function(obj) {
  obj.ref().remove();
  //This works right?
  q.off();
}); 

我可以直接在on()回调中执行off()吗?我不需要指定eventType正确吗?

没有别的要清理了吧?

从文档中:
同样,如果未指定 eventType 或回调,则将删除引用的所有回调。

我可以直接在on()回调中执行off()吗?

是的。

我不需要正确指定事件类型?

正确。如 docs 所述,如果省略eventType,则将删除引用的所有回调。

您也可以像这样链接.off()方法,而不是在回调中调用它:

var q = ref.child('users').child(targetUserId).child('chat');
q.on('child_added', function(obj) {
  obj.ref().remove();
}).off();

正如Frank van Puffelen在注释中建议的那样,您还可以使用.once()方法以使回调仅执行一次:

var q = ref.child('users').child(targetUserId).child('chat');
q.once('child_added', function(obj) {
  obj.ref().remove();
});

此方法的好处是,您不必担心无意中删除其他附加事件。

最新更新