Возвращаемое значение из AJAX - ошибка или функция?
В течение долгого времени я задавался вопросом, можно ли получить данные из обратного вызова AJAX, но Интернет сказал, что нет. Теперь мой коллега, похоже, нашел способ сделать это, но мне интересно, это ошибка или особенность?
Я написал небольшой тестовый код ES7, работающий внутри нашего инструмента, чтобы подтвердить это, это выглядит так:
async function testWrapper(){
var test = await testPromiseResolve()
console.log("async function was resolved to", test)
}
function testPromiseResolve(){
return $.post('../include/Stornieren/retrieveUserID.php', {
//nothing to transmit
}).then((data) => {
data = JSON.parse(data)
console.log("data from testajax is", data)
return data
})
оба консольных журнала возвращают данные правильно (здесь только идентификатор пользователя, извлеченный из базы данных). Таким образом, данные должны быть извлечены из обещания, возвращенного jqueryAJAX $.post.
Я хочу знать, является ли это поведение ошибкой или функцией, потому что если это ошибка, я не могу использовать ее в нашем коде, так как может наступить день, когда эта ошибка будет исправлена, и тогда все обрушится на меня... ^
Кроме того, я не смог проверить, поддерживает ли этот код функциональность async / await. При использовании возврата внутри обещаний (я думаю, что я должен использовать вместо этого разрешение / отклонение, но я должен признать, что я не полностью понял, как они работают внутри jqueryAJAX), я мог бы отключить функциональность обещания и, следовательно, когда код действительно НУЖЕН ждать завершение AJAX перед продолжением, это может представлять риск для будущей надежности кода, когда взаимодействие с базой данных может занять больше времени и т. д.