Однако я пытаюсь сделать переменную зависимой от обратного вызова от функции AJAX get; Я не могу заставить его работать. Я хочу убедиться, что defaults.context всегда имеет значение, прежде чем переходить к другому коду.AJAX get и callbacks
Что я делаю неправильно или как я могу достичь этого надлежащим образом?
var defaults = {
currentCase: undefined,
context: {}
}
// Set defaults
function initDefaults(){
defaults.currentCase = getCurrentCase();
defaults.context = getContext(defaults.currentCase, function(object){
console.log(object); // logs the right data
return object;
});
console.log(defaults.context); // logs undefined
}
initDefaults();
// Get the ID of the current case
function getCurrentCase(){
return global_vars.project_ID;
}
function getContext(id, callback){
var obj = {};
$.get(global_vars.template_url + "/includes/load-project-context.php?id=" + id, function(data) {
obj = JSON.parse(data);
}).complete(function() {
callback(obj);
});
}
Спасибо, что касается
Enzio
Возможного дубликат [Как вернуть ответ от асинхронного вызова?] (HTTP: // stackoverflow.com/questions/14220321/how-do-return-the-response-from-an-asynchronous-call) – Andreas
Похоже, вы уже знаете концепцию обратных вызовов, поскольку вы передаете один из них в getContext '. Вам просто нужно продолжать использовать обратные вызовы по мере необходимости. –
Вы пытаетесь вывести 'defaults.context' перед завершением запроса ajax. Поэтому в тот момент, когда вы вызываете 'console.log',' defaults.context' еще не определен. – mickiewicz