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未定义。想知道如何解决这个问题..
答案 0 :(得分:1)
使用promises / deferreds。 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();
});