0
var results = (function($){
    var objData,
        callback = function (data) {
             objData = data;
        };

    function getData() {
        $.getJSON('/url', function(data){ 
            callback(data) 
        });
    }
    function updateUI(){
        console.log(objData);
    }
    return {
        get   : getData, 
        show  : updateUI,
        //put : putData
    }
})(jQuery);

results.get(); 
results.show()

嗨,我正在尝试缓存一些数据(通过 ajax)并根据我获得的数据更新 UI,但是 show() 方法在回调返回之前执行,因此 objData 未定义。想知道如何解决这个问题。。

4

1 回答 1

1

使用承诺/延迟。jQuery 的实现不是很好(上次我检查过),但它可以用于简单的事情。

var results = (function($){
    var objData,
        callback = function (data) {
             objData = data;
        };

    function getData() {
        return $.getJSON('/url', function(data){    // added return here
            callback(data) 
        });
    }
    function updateUI(){
        console.log(objData);
    }
    return {
        get   : getData, 
        show  : updateUI,
        //put : putData
    }
})(jQuery);

results.get().done(function () { // add `done`
    results.show();
});
于 2013-09-11T14:38:55.787 回答