【发布时间】:2019-06-01 23:12:56
【问题描述】:
我需要不断迭代一个数组(其中实际上包含用于生成 Canvax 图像的 id)。
所以我需要一遍又一遍地迭代键数组,并延迟设置 id。
function animateCanvas() {
keys = getKeys();
let offset = 0;
keys.forEach(function(key){
setTimeout(function(){
animateFrame(key);
}, 2000 + offset);
offset += 2000;
keys = [];
});
}
function animateFrame(id) {
const animationCanvas = document.querySelector(`.canvas-animation`);
const animationContext = animationCanvas.getContext('2d');
const canvas1 = document.getElementById(id);
animationContext.clearRect(0, 0, animationCanvas.width, animationCanvas.height);
animationContext.drawImage(canvas1, 0,0, 170, 170, 0, 0 , 150, 150);
}
预期结果将是通过 animateFrame(key) 将另一个图像无限设置到画布,延迟 2 秒
【问题讨论】:
-
我会使用一个普通的 for 循环并在达到 length 时重置迭代器。 forEach 设置要在开始时访问的元素,并且不会重新访问元素。
标签: javascript arrays iteration settimeout setinterval