首页 > 解决方案 > 使用 requestAnimationFrame polyfill 时是否需要清除超时?

问题描述

旧版浏览器有一个 requestAnimationFrame polyfill,它回退到setTimeout(). 我想知道我们是否需要在使用window.requestAnimationFrame(). 下面是一个代码片段示例:

var timeout;

window.addEventListener( 'scroll', function() {
    if ( timeout ) {
        window.cancelAnimationFrame( timeout );
    }

    timeout = window.requestAnimationFrame( myFunction );
}, false );

或者应该是这样(如果是,那么你能解释一下原因吗?):

window.addEventListener( 'scroll', function() {
    window.requestAnimationFrame( myFunction );
}, false );

标签: javascriptdom-events

解决方案


它应该用作本机 requestAnimationFrame。想想这是本机实现,如果你需要调用cancelRequestAnimationFrame,那么你仍然需要调用它。


推荐阅读