Задать вопрос
@nen0y

Как добавить promise в AJAX запрос?

let userList = '';
$.ajax({
    type: "GET",
    url: "api.api/users/",
    headers: {
      "Content-Type": "application/JSON",
    },
    success: function (res) {
      usersList = res.result;
    },
  });

console.log(userList);


Моя переменная не перезаписывается из-за того, что ajax запрос отрабатывается позже, чем вызов переменной. Как я понял, мне нужно добавить в ajax - promise, но не знаю как. Подскажите, как скорректировать код?
  • Вопрос задан
  • 991 просмотр
Подписаться 1 Простой 7 комментариев
Решения вопроса 1
zkrvndm
@zkrvndm
Архитектор решений
На самом деле jQuery.ajax() умеет в промисы из под коробки:
let userList = await $.ajax({ url: 'api.api/users/' });
console.log(userList);
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Tim-A-2020
@Tim-A-2020
Примерно так
let userList = '';
const myAjax = (url, method = 'GET', headers = {}) => {
  return new Promise(resolve => {
    $.ajax({
      method: method,
      url: url,
      headers: headers,
      dataType: 'json',
      success: resolve,
    });
  })
}


(async () => {
  let data = await myAjax("https://jsonplaceholder.typicode.com/todos/");
  userList = data;
  console.log(userList);
})()
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы