JavaScript异步编程1.1.2 线程的阻塞_JavaScript异步编程1.1.2 线程的阻塞试读-查字典图书网
查字典图书网
当前位置: 查字典 > 图书网 > 编程 > JavaScript异步编程 > 1.1.2 线程的阻塞

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异步编程》其他试读目录

• 第1章:深入理解JavaScript事件
• 1.1.1 现在还是将来运行
• 1.1.2 线程的阻塞 [当前]
• 1.1.3 队列
• 1.2 异步函数的类型
• 1.2.1 异步的I/O函数
• 1.2.2 异步的计时函数
• 1.3 异步函数的编写
• 1.3.1 何时称函数为异步的
• 1.3.2 间或异步的函数
• 1.3.3 缓存型异步函数
• 1.3.4 异步递归与回调存储
• 1.3.5 返值与回调的混搭
• 1.4 异步错误的处理
• 1.4.1 回调内抛出的错误
• 1.4.2 未捕获异常的处理
• 1.4.3 抛出还是不抛出
• 1.5 嵌套式回调的解嵌套
• 1.6 小结