我是Java语言和回调函数的新手。这是回电的正确方法吗?当我测试时,我得到一个无限循环。我想从数据库中检索并存储在要在getSport()中使用的对象的变量中。
constructor(matchid) {
this.hasLoaded = false;
this.matchid = mid;
this.Match = {
"sport": "baskt",
"winner": -1,
};
}
rload(callback) {
this.hasLoaded = true;
matchDataBaseRef.child(this.mid)
.on("value", function (snapshot) {
this.Match = snapshot.val();
callback();
});
}
get getSport() {
if (!this.hasLoaded) {
this.rload(this.getSport);
}
return this.Match['sport'];
}
那不是正确的方法。您正在尝试同步this.getSport
。相反,您应该将初始化包含在回调中,并且不要无限调用它。假设您有这样的事情:
function myTask(params) {
//do something
params.callback();
//do something
}
那么除非您有充分的理由,否则您不应该这样处理:
var foo = function() {
myTask({callback: foo});
};
取而代之的是,在大多数情况下,您需要这样的东西:
var foo = function(cb) {
myTask({callback: cb});
};
cb
需要单独定义。因此,如果这不完全是您想要执行的操作,请不要将包装器函数作为回调传递。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句