Думаю, я использую довольно стандартную настройку. Щелчок по элементу для вызова функции, которая обрабатывает запрос ajax.
Мое ограниченное понимание области действия переменных и обратных вызовов при использовании асинхронного чего-либо и попытке выяснить отложенные jQuery причиняет боль моему слабому мозгу.
$('<div>')
.on({
click : function(){
console.log(
fetchMyData() // this will be 'undefined' but why?
)
}
})
function fetchMyData(){
$.ajax({
// ajax setup
})
.done(function(response){
console.log( response ); // shows 'hello' as expected
return response;
})
}
Я понимаю, что вызов ajax не обязательно будет выполнен к тому времени, когда я выполняю console.log(), поскольку он, конечно, асинхронный.
Итак, как я могу сделать так, чтобы fetchMyData()
отображал результат ajax, как только он будет готов?
fetchMyData()
регистрируется какundefined
, потому что ничего не возвращает. Есть ли причина, по которой вы избегаете.done()
? - person Dallas   schedule 17.07.2013done
фактически ничего не делает. Вы можете использоватьreturn $.ajax({...
в своей функцииfetchMyData
. Затем в обработчике кликов используйтеfetchMyData.done(function() { console.log("foo"); });
- person Ian   schedule 17.07.2013