Я новичок в шаблоне модуля и закрытии в 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());
Я пытаюсь запустить вызов ajax при запуске init. Затем я ищу, чтобы отобразить переменную emailLogs. Я предполагаю, что мой аякс выполняется async, поэтому я не могу получить свои переменные после. Как я могу убедиться, что setEmailLogs() запущен до запуска getEmailLogs().
AJAX является асинхронным. То есть он не работает синхронно. Ваш код синхронный. – Liam
Возможный дубликат [Как вернуть ответ от асинхронного вызова?] (Http://stackoverflow.com/questions/14220321/how-do-return-the-response-from-an-asynchronous-call) – Liam