《JavaScript异步编程》试读:1.1.2 线程的阻塞

下面这段代码打破了我对JavaScript事件的成见。 EventModel/loopBlockingTimeout.js var start = new Date; setTimeout(function(){ var end = new Date; console.log('Time elapsed:', end - start, 'ms'); }, 500); while (new Date - start < 1000) {}; 按照多线程的思维定势,我会预计500毫秒后计时函数就会运行。不过这要求中断欲持续整整一秒钟的循环。如果运行代码,会得到类似这样的结果: Time elapsed: 1002ms 大家得到的数字可能会稍有不同,这是因为setTimeout和setIn- terval一样,其计时精度要比我们的期望值差很多(请参阅1.2.2节)。不过,这个数字肯定至少是1000,因为setTimeout回调在while循环结束运行之前不可能被触发。 那么,如果setTimeout没有使用另一个线程,那它到底在做什么呢?

>JavaScript异步编程

JavaScript异步编程
作者: Trevor Burnham
副标题: 设计快速响应的网络应用
原作名: Async JavaScript: Build More Responsive Apps with Less Code
isbn: 7115316570
书名: JavaScript异步编程
页数: 118
译者: 许青松
定价: 32.00元
出版社: 人民邮电出版社
装帧: 平装
出版年: 2013-6