传入Page中的对象属性稍微多点的话会造成setTimeout变慢?
发布于 6 年前 作者 fangjie 19843 次浏览 来自 问答
var time = Date.now();
        setTimeout(function () {
            console.log('Spend Time: ', Date.now() - time);
        }, 10);

把这里的代码写页面的onLoad中发现Spend Time很长,并不是10ms左右,虽然不可能是等于10ms,但是却比10ms多的太多了,如果传入page的对象属性很少,那么这个Spend Time才比较正常。

4 回复

感谢你的研究。像3楼说的那样,JS的setTimeout可能会由于有其他代码在执行而产生延迟。这里还有一个原因:如果你是直接在Page构造器外面写的代码,这段代码会在初始化时执行,此时setTimeout的函数执行时机是不太可控的(原因包括初始化时载入的代码量较大、同时还要初始化基础库等)。

像这个应该是10ms左右,实际有一百多ms

我不是说时间,是说属性的多少。你确定是属性的个数产生的影响吗?会不会是哪个具体的属性导致的呢……因为可能影响到程序逻辑,影响到启动开销。setTimeout 本来就不是精确定时,因为 js 是单线程的,如果某段代码计算量太大造成阻塞的话,时间就会延迟。

多……到什么程度?

回到顶部