Есть несколько способов решить эту проблему. Во-первых, вы можете изменить свою логику c, чтобы функция def()
всегда выполняла запрос AJAX. Затем вам просто нужно переместить условие if
за его пределы:
function abc() {
// some code...
function def() {
return $.post('file.php', formData, function(result) {});
}
if (a === 1) {
def().then(function(result) {
console.log(result);
// some code...
});
}
}
Это, очевидно, делает сам def()
довольно избыточным.
Другой подход - вернуть пустое, разрешенное обещание из условия else
. Вы можете использовать $.when
для этого:
function abc() {
// some code...
function def() {
if (a === 1) {
return $.post('file.php', formData, function(result) {});
} else {
return $.when(null);
}
def().then(function(result) {
console.log(result);
// some code...
});
}
}