setInterval的时间间隔单位是毫秒,MDN上提到如果间隔小余10,则使用10,但像在iOS手机上甚至无法10毫秒触发一次。如果在做计数器这类程序的时候,希望显示2位毫秒位的话,因为iOS无法10毫秒触发一次,所以下面代码在iOS上会有问题:

let counter = 0;
let sec, ms;
setInterval(function () {
    counter++;
    sec = parseInt(counter / 100);
    ms = counter % 100;
    console.log(sec, ms);
}, 10);

如果把10毫秒间隔提高到100的话可以避免iOS下的问题,程序也不会因为setInterval回调过于频繁影响性能。下面这段代码会比上面那段因为使用了时间的比较,所以更加精确

let start = new Date(), now;
let sec, ms;
setInterval(function () {
    now = new Date();
    diff = now - start;
    sec = parseInt(diff / 1000);
    ms = diff % 1000;
    console.log(sec, ms);
}, 100);