首先,我的代码如下。我的主要问题是,在调用之后或调用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()
}
答案 0 :(得分:2)
您无法从函数返回数据,因为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
});
答案 1 :(得分:0)
我做了一些更改,所以评论“点击这里”
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(数据); //点击这里
});
};