关于在闭包中使用AJAX保存数据时,不执行success回调,直接return的问题。
高洛峰
高洛峰 2016-11-09 10:12:02
0
1
564
var initObj = getData()();
function getData() {
  var initData;
  $.ajax({
      type: "GET",
      url: baseUrl + "Api/User/leftMenu",
      dataType: "JSON",
      async: false,
      success: function(data) {
        initData = data.data;
      }
  });
  return function() {
    return {
      get: function() {
        return initData;
      }
    }
  }
}
console.log(initObj.get())

get返回的数据为undefined;通过打断点发现有执行AJAX(设置了为同步),但是没有执行success的回调,所以initData没有被赋值;我想请求下来的数据保存起来由于权限判断,使用闭包是为了不让人很轻易的去修改他,请问是哪里出了问题,或者有什么更好的解决办法呢?

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全員に返信(1)
三叔

因为ajax是异步的而你直接拿了还没被ajax异步函数赋值的变量出来。异步不用回调你是不知道什么时候才拿到数据的。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート