Open evantianx opened 7 years ago
理解setTimeout 先来看一段代码:
setTimeout
for(var i = 1; i < 3; i++){ setTimeout(function(){ console.log(i); },0) }
输出为:4,4,4 为何如此? JS事件处理器在线程空闲之前不会运行 异步函数的类型 分为两大类: I/O函数和计时函数 I/O函数主要表现在Node.js中,对于I/O操作,异步非阻塞;
在webkit中的console.log是异步的,而在Node中却是同步的 var obj = {} console.log(obj.foo) //webkit会输出`{foo: 'bar'}`,而Node输出`{}` obj.foo = 'bar' 计时函数: setTimeOut()和setInterval 若将setInternal()的延迟设定为0毫秒,调用频率在i7处理器下各浏览器平均值为200次/秒;在Node环境下为1000次/秒(重复setTimeOut()也会得到相应结果);而若使用while()来调用相同事件会达到百万次每秒的频率。 事实上,HTML规范推行的延迟最小值为4ms 如果需要细粒度的计时,在Node中可以使用process.nextTick;在浏览器端(IE9+)上使用requestAnimationFrame函数 异步函数的编写
在webkit中的console.log是异步的,而在Node中却是同步的
console.log
var obj = {} console.log(obj.foo) //webkit会输出`{foo: 'bar'}`,而Node输出`{}` obj.foo = 'bar'
计时函数: setTimeOut()和setInterval 若将setInternal()的延迟设定为0毫秒,调用频率在i7处理器下各浏览器平均值为200次/秒;在Node环境下为1000次/秒(重复setTimeOut()也会得到相应结果);而若使用while()来调用相同事件会达到百万次每秒的频率。 事实上,HTML规范推行的延迟最小值为4ms 如果需要细粒度的计时,在Node中可以使用process.nextTick;在浏览器端(IE9+)上使用requestAnimationFrame函数 异步函数的编写
setTimeOut()
setInterval
setInternal()
while()
process.nextTick
requestAnimationFrame
第一章 深入理解JavaScript事件
事件的调度
理解
setTimeout
先来看一段代码:输出为:4,4,4 为何如此? JS事件处理器在线程空闲之前不会运行 异步函数的类型 分为两大类: I/O函数和计时函数 I/O函数主要表现在Node.js中,对于I/O操作,异步非阻塞;