Я пытаюсь построить простую игру в React, и мне нужно сделать анимацию, в которой набор блоков меняет свой цвет на оранжевый в течение 1 секунды c и go обратно на белый. Эта операция должна выполняться один за другим.
Вот моя игра с массивом элементов div:
И скажем, массив [1,3,5,6] Я хочу провести l oop через этот массив и добавить класс с цветом bg в каждый div на секунду, а затем удалить его
Я пробовал много вещей, но закрыть Я могу понять, что все div изменяют свой цвет в одно и то же время, а не один за другим
Это мой код с функцией, которая запускается нажатием "next lvl" и другой asyn c function
const displayBlocks = async (key) => {
let promise = new Promise((res,rej) => {
setTimeout(() => {
divArray.classList.remove('active');
res('color removed');
}, 500)
});
console.log(key);
ref.current.childNodes[key].classList.add('active');
let result = await promise;
return result;
}
const handleNewGame = () => {
blockArray = []
// generate array with random cells according to points
for (let i = 0;i< props.points;i++) {
let key = Math.floor(Math.random() * (props.board.length)) + 0;
displayBlocks(key).then((res) => {
console.log(res);
blockArray.push(key);
})
}
console.log(blockArray);
}
Я пробовал много решений с asyn c или без, но ни одно из них не работало. Можете ли вы сказать мне, как я могу остановить выполнение l oop, пока функции displayBlock не будут завершены?