🎶 Sym - 一款用 Java 实现的现代化社区(论坛/BBS/社交网络/博客)平台

📕 思源笔记 - 一款桌面端笔记应用,支持 Windows、Mac 和 Linux

🎸 Solo - B3log 分布式社区的博客端节点,欢迎加入下一代社区网络

♏ Vditor - 一款浏览器端的 Markdown 编辑器

浏览器 - 页面重绘前进行回调

2019-12-03

描述

在每一帧动画前调用提供的回调函数。

提示

  • 需使用递归
  • 变量 runningtrue 时,将持续调用已提供回调函数的 window.requestAnimationFrame()
  • 对象中应包含 startstop 两个方法,以便手工对记录状态进行控制
  • 第二个参数 autoStart 默认值为 true。当运行该函数时,默认调用 start 方法

代码

const recordAnimationFrames = (callback, autoStart = true) => { let running = true, raf; const stop = () => { running = false; cancelAnimationFrame(raf); }; const start = () => { running = true; run(); }; const run = () => { raf = requestAnimationFrame(() => { callback(); if (running) run(); }); }; if (autoStart) start(); return { start, stop }; };

示例

在每一帧动画前打印日志:

const cb = () => console.log('Animation frame fired'); const recorder = recordAnimationFrames(cb); // 在每一帧之前打印 'Animation frame fired' recorder.stop(); // 停止执行回调函数 recorder.start(); // 再次开启 const recorder2 = recordAnimationFrames(cb, false); // 在每一帧记录前需要明确的执行 `start`

返回总目录

每天 30 秒系列之 JavaScript 代码


欢迎注册黑客派社区,开启你的博客之旅。让学习和分享成为一种习惯!

2 评论
Adrift001 • 2019-12-03
回复 删除

V没去北京么? 为啥位置还是昆明呢?

AdlerED • 2019-12-03
回复 删除
G网的移动和联通采用的是漫游地接入方式,漫游到哪里IP地址就显示是哪里的。 如果是用的C网电信手机号码,电信采用的是归属地接入方式。即使漫游到北京之后,上网的IP地址还是归属地的昆明。