作者:mobiledu2502931223 | 来源:互联网 | 2020-08-08 11:43
javascript语言是一门“单线程”的语言,不像java语言,类继承Thread再来个thread.start就可以开辟一个线程。所以,javascript就像一条流水线,仅仅是一条流水线而已,要么加工,要么包装,不能同时进行多个任务和...
本篇文章给大家带来的内容是关于Javascript中同步和异步之间的区别介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
Javascript语言是一门“单线程”的语言,
不像java语言,类继承Thread再来个thread.start就可以开辟一个线程。
所以,Javascript就像一条流水线,仅仅是一条流水线而已,要么加工,要么包装,不能同时进行多个任务和流程。
“同步”——一下就让人想到“一起”这个词;
“异步”呢,从字面来讲,好像是在不同的(异)的ways上do something,
那首先想到的词可能是“一边...一边...”,比如‘小明一边吃雪糕一边写作业’,这完全没毛病,雪糕吃完了,作业也写完了,这就是异步?那就大错特错了!
其实同步和异步,
无论如何,做事情的时候都是只有一条流水线(单线程),
同步和异步的差别就在于这条流水线上各个流程的执行顺序不同。
最基础的异步是setTimeout和setInterval函数,
很常见,但是很少人有人知道其实这就是异步,
因为它们可以控制js的执行顺序。我们也可以简单地理解为:
可以改变程序正常执行顺序的操作就可以看成是异步操作。如下代码:
console.log( "1" );
setTimeout(function() {
console.log( "2" )
}, 0 );
setTimeout(function() {
console.log( "3" )
}, 0 );
setTimeout(function() {
console.log( "4" )
}, 0 );
console.log( "5" );
输出顺序是什么呢?
只要指定过这些事件的回调函数,这些事件发生时就会进入"任务队列",等待主线程读取。
所谓"回调函数"(callback),就是那些会被主线程挂起来的代码,前面说的点击事件$(selectot).click(function)中的function就是一个回调函数。异步任务必须指定回调函数,当主线程开始执行异步任务,就是执行对应的回调函数。例如ajax的success,complete,error也都指定了各自的回调函数,这些函数就会加入“任务队列”中,等待执行。
以上就是Javascript中同步和异步之间的区别介绍的详细内容,更多请关注 第一PHP社区 其它相关文章!