首先,我的代碼如下。我的主要問題是我無法在調用之後或調用ajax之後將結果數據返回到invokeConfigFile函數之外。無法從我的JavaScript函數獲取值
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調用將是異步的。這意味着返回空的最終'console.log(data);'將在通話完成之前運行。您應該將其放在回調函數中,以確保設置值,或使Ajax調用同步。 – Nunners
感謝Guffa和你的意見我得到了它的工作。但是對於最後一部分,我如何在'return {my_obj:getDataFromInvokedFile()}'中設置返回的數據呢? – user2720708