@osimone

Как переписать промис через async/await?

У меня есть функция с помощью промиса, которая каждые 2 секунды меняет картинки
const createImage = imgPath => {
  return new Promise((resolve, reject) => {
    const img = document.createElement('img');
    img.src = imgPath;
    img.addEventListener('load', () => {
      images.append(img);
      resolve(img);
    });
    img.addEventListener('error', () => {
      reject('Image not found');
    });
  });
};
let currentIng;
createImage('img/img-1.jpg')
  .then(img => {
    currentIng = img;
    return wait(2);
  })
  .then(() => {
    currentIng.style.display = 'none';
    return createImage('img/img-2.jpg');
  })
  .then(img => {
    currentIng = img;
    return wait(2);
  })
  .then(() => {
    currentIng.style.display = 'none';
    return createImage('img/img-3.jpg');
  })
  .catch(err => console.error(err));


Я пытаюсь переписать эту функцию с помощью async await, но к сожалениюп почему то у меня на старте отображается третья картинка и все
const createImage = imgPath => {
  return new Promise((resolve, reject) => {
    const img = document.createElement('img');
    img.src = imgPath;
    img.addEventListener('load', () => {
      images.append(img);
      resolve(img);
    });
    img.addEventListener('error', () => {
      reject('Image not found');
    });
  });
};

let currentIng;

const createImageAsync = async () => {
    try {
      const img = await createImage('img/img-1.jpg');
      currentIng = img;
      wait(2);
      currentIng.style.display = 'none';
      const img2 = await createImage('img/img-2.jpg');
      currentIng = img2;
      wait(2);
      currentIng.style.display = 'none';
      return await createImage('img/img-3.jpg');
    } catch (err) {
      console.error(err);
    }
  };
  createImageAsync()

что тут не так делаю?
  • Вопрос задан
  • 179 просмотров
Решения вопроса 1
bingo347
@bingo347 Куратор тега JavaScript
Crazy on performance...
Код на then ждет промис из wait, а код на await нет
await wait(2);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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