假设我有一个完成的操作。比如删除。
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();
});
此方法的好处是,您不必担心无意中删除其他附加事件。