js中的同步与异步(2.理解setTimeout)

理解setTimeout的执行方式

console.log( "a" ); //[1]
setTimeout(function() {//[2]
    console.log( "c" )
}, 500 );
setTimeout(function() {//[3]
    console.log( "d" )
}, 300 );
setTimeout(function() {//[4]
    console.log( "e" )
}, 200 );
console.log( "b" ); //[5]

js在执行的过程中对不同的任务会有不同的处理方法。这里的任务分成两种:
1.同步任务。如上面的代码中的[1] [5]
2.异步任务。如上面的代码中的[2] [3] [4]

整个代码的执行可以这样理解:

第一步:扫描。 用一个扫描仪从上向下逐个地分析任务。
如果遇到同步任务,则直接把按先后顺序放到主线程中,这个过程会形成一个栈。
如下:

[1]  ----> [2]

如果遇到异步任务,则放到一个额外的 任务队列 中。按setTimeout的时间参数从小到大放置:

[4] ---> [3] ----> [2]

第二步:执行。先把主线程中的任务做完,等到主线程中的任务全部完成之后,则再去做任务队列中的任务。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容