谈一谈你对js线程的理解

Posted 晓风零乱

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了谈一谈你对js线程的理解相关的知识,希望对你有一定的参考价值。

js线程:javascript是单线程的,所有任务都需要排队,这些任务分为同步任务和异步任务,单线程上有一个主线程任务。同步任务必须再主线程上排队进行,而异步任务(类似于点击事件)必须在主线程上的任务全部进行完成后形成一个任务队列(将所有的触发事件放在一个任务队列中),这任务队列的任务也是需要排队的,当主线程任务完成后他们将通过触发事件按顺序加入到主线程进行任务。可以改变程序正常执行顺序的操作就可以看成是异步操作。

 

ajax 异步解释:ajax异步就是当任务队列存在ajax请求时,当任务走到ajax时,ajax传递参数给服务器,而不需要等数据传到后再执行下面的任务,而是让请求数据的时间继续进行下一个任务,从而表现为异步。其中浏览器为ajax新开一个线程请求,当数据请求到后将回调函数(success())继续放入任务队列中。

<script type="text/javascript">  
        console.log( "1" );  
        setTimeout(function() {  
            console.log( "2" )  
        }, 0 );  
        setTimeout(function() {  
            console.log( "3" )  
        }, 0 );  
        setTimeout(function() {  
            console.log( "4" )  
        }, 0 );  
        console.log( "5" );  
</script>

输出:1 5 2 3 4

例如: console.log( "1" ); console.log( "5" ); 就是同步任务, setTimeout就是异步任务,只有当1.5执行完后才开始执行2.3.4

 

以上是关于谈一谈你对js线程的理解的主要内容,如果未能解决你的问题,请参考以下文章

大厂面试06期谈一谈你对Redis持久化的理解?

Spring相关面试题:谈一谈你对事务的理解?

Spring相关面试题:谈一谈你对事务的理解?

11月第30题:谈一谈你理解的函数式编程?

网易前端面试官,来谈一谈你被拒绝的原因

谈一谈你在powerbi或者powerquery中学到的技能?以及怎么解决实际问题?