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