angularjs – 显示错误 – “Blink延迟任务以使滚动更顺畅”

前端之家收集整理的这篇文章主要介绍了angularjs – 显示错误 – “Blink延迟任务以使滚动更顺畅”前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试使用角度来构建离子(1)app.
我不明白为什么我会收到这个警告

“Blink推迟了一项任务,以使滚动更顺畅.您的计时器和网络任务运行时间不应超过50毫秒,以避免这种情况.请参阅https://developers.google.com/web/tools/chrome-devtools/profile/evaluate-performance/railhttps://crbug.com/574343#c40获取更多信息.”

当我使用页面滑块时,还有其他警告

“忽略尝试使用cancelable = false取消touchmove事件,例如因为滚动正在进行且无法中断.”

“由于主线程繁忙,’touchstart’输入事件的处理延迟了835毫秒.考虑将事件处理程序标记为”被动“以使页面响应更快”

这个警告是“正常”. webview基本上告诉你一些事件被绑定到滚动事件甚至触摸事件,这可能会减慢应用程序的速度.谷歌文档建议例如使用间隔而不是直接在touchmove / drag事件上运行计算或函数,这对于具有webview的移动应用程序来说并不总是可行,具体取决于您尝试完成UX的目的.

此外,如果你使用setInterval,你将不得不使用疯狂的激进时间,如10毫秒,你的滚动/拖动将看起来非常糟糕.
只要忘记这些警告,它们是非常通用的,很可能是指导方针,但大部分时间都无法避免.

如果您仍想避免警告,这是一个jQuery示例.我们的想法是从事件中捕获任何值,然后在单独的线程上运行计算.

var int,x,y;

 $('#mydiv').on('touchstart',function(event){
      int = setInterval(work,20);
 });

 $('#mydiv').on('touchend',function(event){
      clearInterval(int);
 });

 $('#mydiv').on('touchmove',function(event){
      x = event.touches[0].pageX;
      y = event.touches[0].pageY;
 });  

 function work(){
      //how you can do whatever with x y without getting a warning 
 }

猜你在找的Angularjs相关文章