javascript - 无法从我的 javascript 函数获取值

标签 javascript jquery ajax angularjs

首先这是我的代码。我的主要问题是在调用后或 ajax 调用后无法在 invokeConfigFile 函数之外返回结果数据。

var invokeConfigFile = function() {
  return $http.get('json/config.json');
};

var data = {}

var getDataFromInvokedFile = function() {
  invokeConfigFile().then(function(result) {

    var current_env = result.data.current_environment,
        list_env = result.data.environments;

    angular.forEach(list_env, function(value, key) {
      // retrive the config on the current environment
      if(key === current_env) {

          data = value;
          return false; //let's stop if the condition are met
      }
    });
    console.log(data); // return data GOOD
    return data;


  }, function(result) {

    if(result.status == 404) {
      alert("Server config.js file not found.");
      return false;
    }
  });
  console.log(data); // return data EMPTY
};

var my_urls = getDataFromInvokedFile();

我在这里想要完成的是在我从ajax调用(invokeConfigFile())获得结果数据之后,我会将其存储到一个对象中。

类似这样的事情

return {
 my_obj : getDataFromInvokedFile()
}

最佳答案

您无法从函数返回数据,因为 AJAX 调用是异步的。函数返回后响应到达。

当数据到达时使用回调来处理数据:

function getDataFromInvokedFile(callback) {
  invokeConfigFile().then(function(result) {

    var current_env = result.data.current_environment,
        list_env = result.data.environments;

    angular.forEach(list_env, function(value, key) {
      // retrive the config on the current environment
      if(key === current_env) {

          data = value;
          return false; //let's stop if the condition are met
      }
    });
    callback(data);


  }, function(result) {

    if(result.status == 404) {
      alert("Server config.js file not found.");
      calback(false);
    }
  });
}

用法:

getDataFromInvokedFile(function(data){
  // here you have the data
});

关于javascript - 无法从我的 javascript 函数获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20192983/

相关文章:

javascript - 提交事件可以取消吗?

javascript - 将 div 从其位置动画到全屏

javascript - CouchDB AJAX 交互

ajax - 阻止 .ajax 双重加载内容

javascript - dojo onClick() 事件和 javascript 范围

javascript - 如何添加 va

javascript - Twitter bootstrap v3+ 下拉菜单 : which element class do I need to listen to?

jQuery 需要从表单输入框的值设置变量的值

javascript - Firebug 和自调用匿名函数

javascript - || 是什么意思?在 JavaScript 中是什么意思?