Javascript之同步与异步编程

JS中的两种编程思想:同步、异步

JS是单线程的:JS一次性只能处理一件事情,没有完成之前,绝对不会做下件事情

同步:上一件事没有完成,继续处理,只有上一件事情完成了,才会处理下一件事情(JS中大部分都是同步编程)

    for(var i=0;i<1000000; i++){

        if(i === 999999){

            console.log('循环结束')  //->(1)

        }

    }

    console.log('ok')  //->(2);

 

    while(1){};

    console.log('ok');  //永远都不会输出ok,因为while是个死循环

异步:首先规划要做一件事情,但不是当前立马去执行这件事件,需要等待一段事件,这样的话,不会等待,而是继续执行下面的操作,只有当下面的事情都处理完了,才会返回头处理之前的事情;如果下面的事情并没有处理完成,不管等待的事情等待了多长时间,都要踏踏实实的等着,不会执行

    //->在JS中异步编程只有四种情况:定时器、事件绑定、Ajax读取数据、回调函数都是异步编程;

    var n = 0;

    window.setTimeout(function(){

        n++;

        console.log(n)

    }, 0)

    consile.log(n)  //-> 0,1

    //每一个浏览器对于定时器的等待时间都有一个最小的值,谷歌:5~6ms IE:10~13ms,如果设置的时间小于这个值,不会起作用,还是需要等到最小时间才执行,尤其是写0的时候也不会立即执行,还是要等待的;我们定时器设置的等待时间不一定就是最后执行的时间,如果定时器之后其他的事情正在处理中,不管定时器设置的时间有没有到,都是不会执行定时器的事件;

    var n = o0;

    window.setTimeout(function(){

        n+=2;

        console.log(n)

    }, 100);

    window.setTimeout(function(){

        n+=5;

        console.log(n)

    }, 50);

    console.log(n);

    for(var i = 0;i<10000000;i++){}

    console.log(n)  //0 0 5 7

 

转载于:https://my.oschina.net/u/3419199/blog/1483920

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值