Показать сообщение отдельно
  #1 (permalink)  
Старый 02.06.2009, 18:39
Аспирант
Отправить личное сообщение для WalterScott Посмотреть профиль Найти все сообщения от WalterScott
 
Регистрация: 10.05.2009
Сообщений: 57

Как "подождать" выполнение асинхронного запроса?
function hasChildren(id) {
	var dicHasChildren = false;
	jQuery.post(url, 
			{"sydicId": id}, 
	function(resp) {
		dicHasChildren = resp;
	});	
	return dicHasChildren;
}

function confirmDelete(obj, link) { 

        var msg = "Вы действительно хотите удалить словарь?";

    	if (hasChildren(sydicId)) 
    		msg = "Словарь содержит подсловари. Вы действительно хотите удалить словарь?";
    	
	    var ans = confirm(msg);

        ....

Суть в следующем. Функция confirmDelete запрашивает подтверждение при удалении словаря. Функция hasChildren проверяет, не содержит ли словарь подсловари, c помощью ajax-запроса, и если содержит, то текст предупреждения должен измениться.
Проблема в том, что функция hasChildren возвращает значение не дожидаясь выполнения callback-функции, которая передается в jQuery.post и соответственно возвращаемое значение всегда остается одинаковым. Как заставить функцию hasChildren подождать выполнения запроса к серверу?
Ответить с цитированием