我是新來的模塊模式和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