如何利用setTimeout探究JavaScript的执行机制?
- 内容介绍
- 文章标签
- 相关推荐
本文共计631个文字,预计阅读时间需要3分钟。
前言:我们知道JS是一个单线程的语言,其运行机制比较特殊。
下面通过settimeout的几个示例来展示javascript运行机制的特殊点:示例1:console.log(1); setTimeout(function() { console.log(2); }, 0);
结果:1 2
前言
我们知道JS是一个单线程的语言,而且其运行机制比较特殊。
下面我们通过settimeout的几个示例来展现javascript的运行机制的特殊点
示例1
console.log(1); setTimeout(function(){ console.log(2); },0); console.log(3); // 打印出 1 3 2
示例2
console.log('1'); setTimeout(function(){ console.log('2'); },0); while(1){} // 打印出1,然后浏览器卡死,不会打印出2
javascript会先把需要运行的内容放到任务队列中
但是如果遇到settimeout,会认为这是个异步任务,会先放到异步队列中
浏览器会先执行同步任务,等到同步任务执行完之后,再查看异步队列
如果异步队列中的任务的执行时机到了,浏览器就会把任务放到同步队列中去。
即:
异步任务一定在同步任务之后执行。
本文共计631个文字,预计阅读时间需要3分钟。
前言:我们知道JS是一个单线程的语言,其运行机制比较特殊。
下面通过settimeout的几个示例来展示javascript运行机制的特殊点:示例1:console.log(1); setTimeout(function() { console.log(2); }, 0);
结果:1 2
前言
我们知道JS是一个单线程的语言,而且其运行机制比较特殊。
下面我们通过settimeout的几个示例来展现javascript的运行机制的特殊点
示例1
console.log(1); setTimeout(function(){ console.log(2); },0); console.log(3); // 打印出 1 3 2
示例2
console.log('1'); setTimeout(function(){ console.log('2'); },0); while(1){} // 打印出1,然后浏览器卡死,不会打印出2
javascript会先把需要运行的内容放到任务队列中
但是如果遇到settimeout,会认为这是个异步任务,会先放到异步队列中
浏览器会先执行同步任务,等到同步任务执行完之后,再查看异步队列
如果异步队列中的任务的执行时机到了,浏览器就会把任务放到同步队列中去。
即:
异步任务一定在同步任务之后执行。

