Angular 角阻力性能

Angular 角阻力性能,angular,drag-and-drop,angular7,angular-cdk,Angular,Drag And Drop,Angular7,Angular Cdk,我正在开发一个应用程序,在前端使用angular 7,使用angular drag and drop cdk。在拖动元素时,我有一个必须执行的算法,但不幸的是,这个算法减慢了拖放速度,所以有没有办法进行这种处理并加快拖放速度。顺便说一句,算法的调用是dragMove(事件)方法 dragMove(事件:cdkdramove){ this.parentClientRect=event.source.getRootElement().parentElement.getBoundingClientRe

我正在开发一个应用程序,在前端使用angular 7,使用angular drag and drop cdk。在拖动元素时,我有一个必须执行的算法,但不幸的是,这个算法减慢了拖放速度,所以有没有办法进行这种处理并加快拖放速度。顺便说一句,算法的调用是dragMove(事件)方法

dragMove(事件:cdkdramove){
this.parentClientRect=event.source.getRootElement().parentElement.getBoundingClientRect();
this.clientRect=event.source.element.nativeElement.getBoundingClientRect();
这是左位=
this.clientRect.left-this.parentClientRect.left-((this.clientRect.left-this.parentClientRect.left)%constantedsgda.STEP);
如果(此.leftPosition<0){
这个.leftPosition=0;
}
event.source.element.nativeElement.style.transform=`translate3d(${this.leftPosition}px,0px,0px)`;
这是callAlgo();
}

如果运行的算法需要一些CPU,并且可以冻结UI,则可以将其分成若干部分,并使用
setTimeout
对其进行排队。例如,类似这样的内容:

function heavyProcess(params) {
  for (let i=0;i< 1000; i++) {
     doSomething(params[i]); //needs 0.005 secs
  }
}
函数重进程(参数){
for(设i=0;i<1000;i++){
doSomething(参数[i]);//需要0.005秒
}
}
这将使浏览器在大约0.005*1000=5秒的时间内无响应。但它可能会被重构为:

function heavyProcess(params) {
  for (let i = 0; i < someSize; i++) {
     setTimeout(()=>doSomething(params[i]));
  }
}
函数重进程(参数){
for(设i=0;idoSomething(参数[i]);
}
}

现在你有1000个小函数要排队处理,事件可以在其中两个中间处理。

如果你有一个运行了一些CPU并能冻结UI的算法,你可以将它分成部分并使用<代码> SETTIMEOUT进行排队。例如,类似这样的内容:

function heavyProcess(params) {
  for (let i=0;i< 1000; i++) {
     doSomething(params[i]); //needs 0.005 secs
  }
}
函数重进程(参数){
for(设i=0;i<1000;i++){
doSomething(参数[i]);//需要0.005秒
}
}
这将使浏览器在大约0.005*1000=5秒的时间内无响应。但它可能会被重构为:

function heavyProcess(params) {
  for (let i = 0; i < someSize; i++) {
     setTimeout(()=>doSomething(params[i]));
  }
}
函数重进程(参数){
for(设i=0;idoSomething(参数[i]);
}
}

所以现在你有1000个小函数排队要处理,事件可以在其中两个中间处理。

减慢是什么意思?反应迟钝?拖拉时慢动作你说慢是什么意思?反应迟钝?拖动时动作缓慢