国外英语写作网站,大连微信网站开发,曹县建设厅网站,餐饮营销策划与运营1. 背景#xff1a;
作为一个web前端开发工程师#xff0c;需要经常与页面浏览器打交道#xff0c;很多时候我们在项目中需要用到延迟来获取数据#xff0c;比如直播页面#xff0c;接口返回给我们一个时间#xff0c;我们需要在时间到达后去执行一些操作#xff0c;使…1. 背景
作为一个web前端开发工程师需要经常与页面浏览器打交道很多时候我们在项目中需要用到延迟来获取数据比如直播页面接口返回给我们一个时间我们需要在时间到达后去执行一些操作使用setTimeout会发现setTimeout 是不准的因为 setTimeout 是一个宏任务它的指定时间指的是进入主线程的时间。
2. 实现准时的 “setTimeout” setTimeout 系统时间补偿 当每一次定时器执行时后都去获取系统的时间来进行修正虽然每次运行可能会有误差但是通过系统时间对每次运行的修复能够让后面每一次时间都得到一个补偿。 function timer() { var speed 500, counter 1, start new Date().getTime(); function instance() { var real (counter * speed), ideal (new Date().getTime() - start); counter; var diff (ideal - real); form.diff.value diff; window.setTimeout(function() { instance(); }, (speed - diff)); // 通过系统时间进行修复 }; window.setTimeout(function() { instance(); }, speed);
}3. 结束 通过系统的时间补偿能够让我们的 setTimeout 变得更加准时。