Javascript 我有没有办法等一声“啊”;封锁队列“;在无限循环中释放一些空间?
我正在学习使用snap.SVG制作SVG动画。基本上,我正在绘制动画线条,在动画结束后将其自身从DOM中移除 我想让它无限大,但要限制一次在屏幕上显示的行数。有什么比使用计时器更优雅的吗 期待“承诺”可能是我想要的答案吗?我仍然不知道如何回答这样一个承诺:告知某条路径确实自行移除了Javascript 我有没有办法等一声“啊”;封锁队列“;在无限循环中释放一些空间?,javascript,arrays,promise,async-await,snap.svg,Javascript,Arrays,Promise,Async Await,Snap.svg,我正在学习使用snap.SVG制作SVG动画。基本上,我正在绘制动画线条,在动画结束后将其自身从DOM中移除 我想让它无限大,但要限制一次在屏幕上显示的行数。有什么比使用计时器更优雅的吗 期待“承诺”可能是我想要的答案吗?我仍然不知道如何回答这样一个承诺:告知某条路径确实自行移除了 document.addEventListener('DOMContentLoaded', (event) => { let s = Snap("#svg"); let lines = [
document.addEventListener('DOMContentLoaded', (event) => {
let s = Snap("#svg");
let lines = [];
let hw = s.node.clientWidth;
let hh = s.node.clientHeight;
while (true){
if(lines.length > 20){
Promise.race(lines);
}
let x = Math.floor(Math.random() * hw);
let y = Math.floor(Math.random() * hh);
let length = x + Math.floor(hw/20);
let path = s.path("M"+x+" "+y+"L"+length+" "+y);
path.attr({ 'stroke': 'black', 'strokeWidth': 1, 'stroke-dasharray': length+' '+length, 'stroke-dashoffset': length});
let dash = x+','+length;
path.animate({'stroke-dashoffset':0}, 2000, mina.easeout, path.remove());
lines.push(path);
}
});
while(true)
将阻塞用户界面,这对用户来说是非常糟糕的体验。考虑使用异步函数调用代替