我是新来的模块模式和JavaScript中的闭包。我正在尝试创建一个获取JSON数据的模块,以便将其显示在我的网页上。ajax运行后调用闭包函数
var EmailLogs = (function(){
var emailLogs = [];
var config = {};
function init(options){
for(var prop in options) {
if(options.hasOwnProperty(prop)){
config[prop] = options[prop];
}
}
setEmailLogs();
}
function setEmailLogs(){
$.ajax({
type: "POST",
headers : { "cache-control": "no-cache" },
url: "../../ajax/adminGetEmailLogs.php",
data: {options: JSON.stringify(config)},
dataType: 'json',
success: function(values){
if(values.success)
{
emailLogs = values.emailLogs;
}
}
});
}
function getEmailLogs(){
return emailLogs;
}
return{
init: init,
getEmailLogs: getEmailLogs,
}
})();
var options = {
sData : [
'email_id'
],
filters : {
user_id : 44860,
}
}
EmailLogs.init(options);
console.log(EmailLogs.getEmailLogs());
我试图在init运行时运行ajax调用。然后我正在寻找获取emailLogs变量来显示。我认为,因为我的ajax正在运行异步,这就是为什么我无法获得我的变量。在运行getEmailLogs()之前,如何确保setEmailLogs()已经运行。
AJAX是异步的。即它不会同步运行。你的代码是同步的。 – Liam
可能的重复[如何返回来自异步调用的响应?](http://stackoverflow.com/questions/14220321/how-do-i-return-the-response-from-an-asynchronous-call) – Liam