首页 > 其他 > 详细

怎样推迟某个函数的执行

时间:2019-10-22 13:06:03      阅读:64      评论:0      收藏:0      [点我收藏+]

方法1: 使用setTimeout();

function sayHi(){
    alert("Hi.");
}

setTimeout(sayHi, 2000);

 

方法2: 使用window.requestAnimationFrame();

var element = document.getElementById(‘animate‘);
element.style.position = ‘absolute‘;

var start = null;

function step(timestamp) {
  if (!start) start = timestamp;
  var progress = timestamp - start;
  // 元素不断向左移,最大不超过200像素
  element.style.left = Math.min(progress / 10, 200) + ‘px‘;
  // 如果距离第一次执行不超过 2000 毫秒,
  // 就继续执行动画
  if (progress < 2000) {
    window.requestAnimationFrame(step);
  }
}

window.requestAnimationFrame(step);

 

两者区别: 

setTimeout()需要手动设置延迟时间, 而requestAnimationFrame()则是会推迟到浏览器下一次重流时执行. 因此, 前者比较通用, 后者主要是放一些需要操作DOM的方法函数, 这样有利于提升性能;

 

注意:

window.cancelAnimationFrame()可以用于取消其内回调函数的执行.

 

方法3: 使用window.requestIdleCallback()将内部函数推迟到系统资源空闲时执行;

用法和window.requestAnimationFrame()类似, 只是推迟条件不同. 同时也有一个取消执行的方法: window.cancelIdleCallback()

requestIdleCallback(myNonEssentialWork);

function myNonEssentialWork(deadline) {
  while (deadline.timeRemaining() > 0) {
    doWorkIfNeeded();
  }
}

 

怎样推迟某个函数的执行

原文:https://www.cnblogs.com/aisowe/p/11718583.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!