在JS和线程里面都有着这两个相当重要的概念,同步异步,这对于初学者来说相当迷惑(当然,我也是初学者之一)这里就按照我的理解来讲一讲这两个东西。

1.同步

这个很好理解上一条执行完才能执行下一条,类似于线程里面的阻塞,也可以理解为Java线程里面的所有方法都上了一把锁,就是单线程。
同步,是所有的操作都做完,才返回给用户结果。

2.异步

异步执行的一条语句可以看成是Java里面的每个线程,执行一条语句就启动一个线程,当执行完以后就把执行的需求发送给控制程序,然后控制程序去完成剩下的工作。当然,可以变相地看成多个线程在同步执行。(迷惑点就在这里,同步相异执行,异步相同执行 icon_cry.png )不过问题不大,记住是相反的就好啦。
异步,不用等所有操作等做完,就响应用户请求。

3.JS中的异步与同步

在JS中大多函数都有属性表明其是异步还是同步,下面放一个简单的例子,大家直接F12粘贴就可以看到结果:

        console.log( 1 );
        setTimeout(function() {
            console.log(2)
        }, 0 );
        setTimeout(function() {
            console.log(3)
        }, 0 );
        setTimeout(function() {
            console.log(4)
        }, 0 );
        console.log(5)

这里尽管setTimeout的time延迟时间为0,其中的function也会被放入一个队列中,等待下一个机会执行,当前的代码(指不需要加入队列中的程序)必须在该队列的程序完成之前完成,因此结果可能不与预期结果相同。

16人点赞