lyp123

首页 » 编程 » 正文

浅谈JS同步和异步

2019-07-18 19:07编程2523人阅读

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

1.同步

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

2.异步

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

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也会被放入一个队列中,等待下一个机会执行,当前的代码(指不需要加入队列中的程序)必须在该队列的程序完成之前完成,因此结果可能不与预期结果相同。

2评论

今日新鲜事
今日新鲜事Chrome/63.0Windows 6.1

2020-01-24 01:28:39

文章不错支持一下吧
回复
小明
小明AuthorChrome/80.0Windows 10.0

2020-02-25 07:53:36

回复 今日新鲜事: 感谢支持啊~ :!:
回复

添加新评论