Асинхронная функция с ожиданием и обещаниемJavascript

Форум по Javascript
Ответить
Anonymous
 Асинхронная функция с ожиданием и обещанием

Сообщение Anonymous »

Я создаю веб-анимацию с помощью JS, используя асинхронную функцию.
Первая анимированная последовательность включает в себя две анимации, выполняемые одновременно: «animLineLeft» и «animLineRight». После завершения первой последовательности я хотел бы запустить вторую последовательность, а затем третью.
Проблема в том, что вторая последовательность выполняется так же, как и первая.

Код: Выделить всё

function animate(elem, animation) {
return new Promise((resolve, reject) => {
function handleAnimationEnd() {
console.log("animation ended...");
resolve(elem);
}
elem.addEventListener("animationend", handleAnimationEnd, { once: true });
elem.classList.add(animation);
});
}

async function init() {
const lineLeft = document.querySelector(".js-line-left");
const lineRight = document.querySelector(".js-line-right");
const logo = document.querySelector(".js-logo");
const content = document.querySelectorAll(".js-content");

// First sequence
const animLineLeft = animate(lineLeft, "is-visible");
const animLineRight = animate(lineRight, "is-visible");

await Promise.all([animLineLeft.finished, animLineRight.finished]);

// Second sequence
await animate(logo, "is-visible");

// Third sequence
for (const el of content) {
await animate(el, "is-visible");
}
}

init();



Подробнее здесь: https://stackoverflow.com/questions/798 ... nd-promise
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»