浅述js同步异步

2018-03-16  本文已影响12人  大胡子111

js是单线程就像一条流水线,仅是一条流水线。不管是同步和异步,做事情的时候只有一条流水线(单线程),同步和异步的差别就在于这条流水线上各个流程的执行顺序不同。看到“异步”,首先想到的词可能是“一边...一边...”,比如‘小花一边听歌一边画画’,好像没啥毛病,异步就是这样,其实这是不对的。

同步:

<script>
    function num1(){
        console.log(1)
    }
    num1()

    function num2(){
        console.log(2)
    }
    num2()

    function num3(){
        console.log(3)
    }
    num3()

    function num4(){
        console.log(4)
    }
    num4()
</script>
异步:setTimeout和setInterval是最基础的异步,定时器虽然是0秒,然并暖。
<script>
    function num1(){
        setTimeout(function(){
            console.log(1)
        },0)
    }
    num1()

    function num2(){
        console.log(2)
    }
    num2()

    function num3(){
        console.log(3)
    }
    num3()

    function num4(){
        console.log(4)
    }
    num4()
</script>

出现上面的异步问题,怎么解决呢?我就要输出1,2,3,4

<script>
    function num1() {
        setTimeout(function () {
            console.log(1)
            num2()
            num3()
            num4()
        }, 0)
    }
    num1()

    function num2() {
        console.log(2)
    }


    function num3() {
        console.log(3)
    }


    function num4() {
        console.log(4)
    }

</script>

换汤不换药,依法则套入工作即可,祝愉快顺利。

上一篇下一篇

猜你喜欢

热点阅读