gpt4 book ai didi

带有数据库的 Javascript 回调

转载 作者:行者123 更新时间:2023-11-30 00:11:15 27 4
gpt4 key购买 nike

我是 Javascript 和回调函数的新手。这是回拨的正确方法吗?当我测试时,我得到一个无限循环。我想从数据库中检索并存储在一个对象的变量中以在 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 需要单独定义。因此,如果这不是您想要做的,请不要将包装函数作为回调传递。

关于带有数据库的 Javascript 回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36407082/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com