我正在尝试使用$ timeout(或$ interval),并且从文档和网上的大量示例计算,以1秒为增量很容易:
var counter = 0;
$timeout(timer(), 1000);
var timer = function() {
counter++;
$timeout(timer(), 1000);
};
然而,以1毫秒为增量调用$ timeout时,时间不准确。以下是一个示例:http://jsfiddle.net/eh8o9s28/
如果您在示例中运行计时器它看起来没问题,但是与秒表相比,大约20秒后Angular时间大约是2秒错误,并且它继续偏离那里。 (请注意,如果将增量更改为1000,则时间非常准确。)
有什么想法吗?我想知道毫秒增量是否太快而$digest
周期跟不上?
答案 0 :(得分:1)
$ timeout是jus的一个封装器,用于JS中的setTimeout定时函数是非常不可靠的,它们至多是近似的,它们的精度取决于许多因素,如操作系统,体系结构,CPU负载,甚至你的脚本的构建情况,所以如果需要高精度,你不应该依靠$ timeout或$ interval进行时间关键操作