JavaScript语言的一大特点就是单线程,也就是说,同一个时间只能做一件事 单线程就意味着,所有任务需要排队,前一个任务结束,才会执行后一个任务。如果前一个任务耗时很长,后一个任务就不得不一直等着。于是,所有任务可以分成两种,一种是同步任务,另一种是异步任务
同步任务指的是,在主线程上排队执行的任务,只有前一个任务执行完毕,才能执行后一个任务;
异步任务指的是,不进入主线程、而进入"任务队列" 的任务,只有"任务队列"通知主线程,某个异步任务可以执行了,该任务才会进入主线程执行。
console.log(1);
setTimeout(function() {
console.log(2);
},1000)
setTimeout(function() {
console.log(3);
},0)
console.log(4);
/*
分析:
同步任务,按照顺序一步一步执行
异步任务,当读取到异步任务的时候,将异步任务放置到任务队列
中,当满足某种条件或者说指定事情完成了(这里的是时间分别是达到了0ms和1000ms)当指定
事件完成了才从任务队列中注册到主线程的事件队列,当同步事件完成了,便从
事件队列中读取事件执行。(因为3的事情先完成了,所以先从任务队列中注册到
事件队列中,所以先执行的是3而不是在前面的2)
*/
【小结】
同步与异步不是JavaScript特有的概念,它是操作系统层面的东西,跟编程语言无关。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。