【发布时间】:2020-03-11 13:44:54
【问题描述】:
我正在尝试在 React 中构建一个简单的游戏,我需要制作一个动画,其中一组块将其颜色更改为橙色,持续 1 秒,然后变回白色。这个操作需要一个一个的进行。
这是我的带有 div 数组的游戏:
假设数组是 [1,3,5,6] 我想循环遍历该数组并向每个 div 添加一个带有 bg 颜色的类一秒钟,然后将其删除
我尝试了很多东西,但我能得到的结果是所有 div 都同时改变颜色,而不是一个一个地改变
这是我的代码,它的功能是按“next lvl”和另一个异步功能开始的
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);
}
我尝试了许多异步或不异步的解决方案,但都没有奏效。你能告诉我如何在 displayBlock 函数完成之前停止循环的执行吗?
【问题讨论】:
标签: javascript reactjs loops asynchronous animation