Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 要更新回调中的对象,请提供正确的日志,但全局对象未更新_Javascript_Callback_Data Loss - Fatal编程技术网

Javascript 要更新回调中的对象,请提供正确的日志,但全局对象未更新

Javascript 要更新回调中的对象,请提供正确的日志,但全局对象未更新,javascript,callback,data-loss,Javascript,Callback,Data Loss,我对在Javascript中使用回调函数相当陌生。我也不确定回调是否是我的问题 我从数据库中获取一些数据,并希望使用.push方法将其保存到一个对象 在把它推进去之后,我记录了这个对象,它记录了正确的数据。所以数据库连接不成问题 我使用的是一种模型-视图-控制器模型,希望控制器将数据从模型传递到视图组件。如果我尝试Models get方法,我会得到一个空对象 我试图通过日志记录找出数据丢失的地方,正如您在调用getData()的init函数中看到的那样。此日志已返回“未定义” 有人知道为什么会发

我对在Javascript中使用回调函数相当陌生。我也不确定回调是否是我的问题

我从数据库中获取一些数据,并希望使用.push方法将其保存到一个对象

在把它推进去之后,我记录了这个对象,它记录了正确的数据。所以数据库连接不成问题

我使用的是一种模型-视图-控制器模型,希望控制器将数据从模型传递到视图组件。如果我尝试Models get方法,我会得到一个空对象

我试图通过日志记录找出数据丢失的地方,正如您在调用getData()的init函数中看到的那样。此日志已返回“未定义”

有人知道为什么会发生这种情况吗?或者有人认为我对回调方法的使用有主要的误解吗

我真的很想在这里得到一些帮助

提前感谢;)

我带着承诺试过了。但我想我不太明白这是怎么回事。甚至在查阅了几个关于这个话题的博客之后

以下是我的尝试:

init = function() {
        console.log("init Detail.js");

        setupParse();

        getData().then(function(){
            console.log(einstellerData);
            console.log(vermieterData);

            $(that).trigger("setWohnungsDetails");
        });

        return that;
    },

    getData = function() {

        var promise = new Promise();

        getObjektData(function(einsteller, vermieter){
            getVermieterData(vermieter);
            getEinstellerData(einsteller);
        });

        promise.resolve();

        return promise;
    },

谁能帮我一下,告诉我我在这里误解了什么吗?

我猜
queryObjekt.get
getObjectData
中是异步的,而
getData
期望
getObjectData
是即时的


如果您在链接异步事件及其结果数据时遇到问题,我建议您了解承诺的概念。寻找承诺/A或延期。对于承诺,您不必一直传递回调,相反,您有一个最终将具有值的中间承诺对象。您可以将回调添加到承诺中,而不是生成承诺的函数。

我可以通过以下方式执行此操作:$.when(getData()).done(function(){console.log(einstellerData);console.log(verimeterdata);$(that.trigger(“setWohnungsDetails”);});如果
getData
返回一个承诺,则在
时不需要将其包装在
中。但是是的,这是本质。我不知道如何回报承诺。我编辑了我的问题,这样你就可以看到我是如何试图回答的。
init = function() {
        console.log("init Detail.js");

        setupParse();

        getData().then(function(){
            console.log(einstellerData);
            console.log(vermieterData);

            $(that).trigger("setWohnungsDetails");
        });

        return that;
    },

    getData = function() {

        var promise = new Promise();

        getObjektData(function(einsteller, vermieter){
            getVermieterData(vermieter);
            getEinstellerData(einsteller);
        });

        promise.resolve();

        return promise;
    },