基于数据库的Javascript回调

基于数据库的Javascript回调,javascript,asynchronous,Javascript,Asynchronous,我不熟悉Javascript和回调函数。这是回电话的正确方式吗?当我测试时,我得到一个无限循环。我想从数据库中检索并存储在对象的变量中,以便在getSport()中使用 这不是正确的方法。您正在尝试在this.getSport中同步。相反,您应该在回调中进行初始化,而不是无限地调用它。假设你有这样的东西: function myTask(params) { //do something params.callback(); //do something } var fo

我不熟悉Javascript和回调函数。这是回电话的正确方式吗?当我测试时,我得到一个无限循环。我想从数据库中检索并存储在对象的变量中,以便在getSport()中使用


这不是正确的方法。您正在尝试在
this.getSport
中同步。相反,您应该在回调中进行初始化,而不是无限地调用它。假设你有这样的东西:

function myTask(params) {
    //do something
    params.callback();
    //do something
}
var foo = function(cb) {
    myTask({callback: cb});
};
除非你有很好的理由,否则你不应该这样做:

var foo = function() {
    myTask({callback: foo});
};
相反,在大多数情况下,您需要以下内容:

function myTask(params) {
    //do something
    params.callback();
    //do something
}
var foo = function(cb) {
    myTask({callback: cb});
};

cb
需要单独定义。因此,如果您不希望将包装器函数作为回调传递。

如果它调用异步函数,则无法从
getSport
同步返回。你应该阅读和阅读。您还遇到了
this
的问题,请参阅。这些都是来自btw的
this。getSport
是一个getter,而不是一个函数-getter递归地调用自身无限量,呃,堆栈溢出。如果我正确认识到,您想要的行为似乎与模式匹配。也就是说,异步执行
getSport
,然后
生成
rload
结果,然后再次执行
getSport
,直到某个条件匹配为止。