Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/433.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我有没有办法等一声“啊”;封锁队列“;在无限循环中释放一些空间?_Javascript_Arrays_Promise_Async Await_Snap.svg - Fatal编程技术网

Javascript 我有没有办法等一声“啊”;封锁队列“;在无限循环中释放一些空间?

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 = [

我正在学习使用snap.SVG制作SVG动画。基本上,我正在绘制动画线条,在动画结束后将其自身从DOM中移除

我想让它无限大,但要限制一次在屏幕上显示的行数。有什么比使用计时器更优雅的吗

期待“承诺”可能是我想要的答案吗?我仍然不知道如何回答这样一个承诺:告知某条路径确实自行移除了

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)
将阻塞用户界面,这对用户来说是非常糟糕的体验。考虑使用异步函数调用代替