Возвращаемое значение из 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 перед продолжением, это может представлять риск для будущей надежности кода, когда взаимодействие с базой данных может занять больше времени и т. д.

0 ответов

Другие вопросы по тегам