如何从回调函数返回 var?OOP 属性

How return var from callback function ? OOP property

本文关键字:var OOP 属性 返回 函数 回调      更新时间:2023-10-31
var App = function(){
   this.db = [];
}
App.prototype.getJson = function(){
   var slef = this;
   $.getJSON('url', function(data){
       self.db.push(data);
     });
}
$(document).ready(function(){
   var app = new App();
   console.log(app.db); //return []
   setTimeout(function(){
      console.log(app.db); //return data JSON
   }, 5000);
});

为什么会这样?如何在没有设置超时的情况下获取属性应用程序.db?

我可以从回调函数返回变量而不进行限制吗

appAPI.db.async.get(key, function(value) {
        var data = (value === null) ? null : JSON.parse(value);
        // invoke the callback and pass the results to it
        callback(data);
    });

LB.getData('user', function(data) {
    // use the data here
    alert(data.someProperty);
});

这是因为您执行了 assync 请求,请在请求结束后使用 promices 获取值。 http://api.jquery.com/promise/

setTimeout(function(){
     console.log(app.db); //return data JSON
}, 5000);

如果请求时间超过 5 秒,请不要保存您

样本:

var App = function(){
   this.db = [];
}
var dfd = new jQuery.Deferred();
App.prototype.getJson = function(){
   var slef = this;
   $.getJSON('url', function(data){
       self.db.push(data);
       dfd.resolve(data);
     });
}
$(document).ready(function(){
   var app = new App();
   console.log(app.db); //return []
   $.when( dfd.promise()).then(
      function( data) {
        console.log(app.db);
      }
    );
});