vue的transition代码里nextFrame为什么要间隔两帧?

版本为vue2.3,源码如下:


var raf = inBrowser && window.requestAnimationFrame

  ? window.requestAnimationFrame.bind(window)

  : setTimeout;


function nextFrame (fn) {

  raf(function () {

    raf(fn);

  });

}

这个nextFrame似乎是延迟了两帧然后触发fn进行重绘,这个情况下有时候动画会有一个抖动,但是改为下面代码的话,在下一帧就开始动画,动画抖动似乎就消失了,请问上面这样写的用意是什么?


function nextFrame (fn) {

  raf(function () {

    fn();

  });

}


红糖糍粑
浏览 509回答 1
1回答

aluckdog

不清楚你的上下文,根据你写的代码看是因为raf,假设当前raf=setTimeout。那第一种就是setTimeout了两次啊,进行了两次类似cpu转让的操作。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript