Я первоначально так и делал. Сейчас понял, что происходило.
function confirmDelete(obj, link) {
var msg = "Вы действительно хотите удалить словарь?";
var ans;
jQuery.post( url,
{"sydicId": sydicId},
function(resp) {
if (resp) {
msg = "Словарь содержит подсловари. Вы действительно хотите удалить словарь?";
}
ans = confirm(msg);
});
alert(ans); //выводит раньше чем выполнилась callback-функция
return ans ? true : false;
}
Если убрать алерт перед return, то возврат из функции будет происходить раньше, чем появилось окно confirm. То есть функция всегда возвращала false(или undefined, что равнозначно).
alert притормаживает выполнение функции, и ajax успевает отработать.
То есть я сейчас вижу только один выход - поставить перед return таймаут с каким-то фиктивным действием, чтобы не дать функции confirmDelete завершиться, прежде чем появится окно confirm.