Javascript 使用setTimeout(fn,0)将代码执行延迟到当前调用堆栈之后是否可靠?
我有一个函数,调用次数未知。我需要知道函数运行了多少次,所以我正在执行:Javascript 使用setTimeout(fn,0)将代码执行延迟到当前调用堆栈之后是否可靠?,javascript,Javascript,我有一个函数,调用次数未知。我需要知道函数运行了多少次,所以我正在执行: (function () { var i = 0, increment = function () { if (i === 0) { setTimeout(function () { console.log('increment was called ' + i + ' times.'); //
(function () {
var i = 0,
increment = function () {
if (i === 0) {
setTimeout(function () {
console.log('increment was called ' + i + ' times.'); // increment was called 3 times.
i = 0;
}, 0);
}
i++;
};
increment();
increment();
increment();
})();
有人能告诉我这在所有浏览器中是否都是可靠的,或者是否有更好的模式来实现这一点吗?是的,这段代码似乎在所有浏览器中都是可靠的,即使在IE的最低版本中也是如此。我在IE8中尝试了这一点,但效果很好。
setTimeout()
在队列中放置了一个函数,当所有其他函数都已运行时执行
如果在调用
increment()
之前调用setTimeout()
几次,您可能会注意到i
变量的值大于1。有趣的设计,尽管我会使超时至少13毫秒,因为有些浏览器将数字视为太低,可能会立即运行它,不要引用我的想法是的,这是可靠的,注意到在所有现代浏览器中,根据html5规范,小于4ms的指定延迟将被四舍五入到4ms。你怎么有两个答案?