setTimeout延时0毫秒的作用

setTimeout延时0毫秒的作用
今天看了JD的代码,发现一个非常有意思的地方,他用到了setTimeout,但是设置的时间是0ms,douma瞬间傻X了,这是要干嘛?
这里是JD的选择发票的部分JS代码
然后我就百度一下啊。然后理解了这样写的主要用途,其他还有不知道的,欢迎各位大神补充,我只是抛砖引玉。
setTimeout延时0毫秒的作用:
这样写的话,setTimeout内部代码会变成异步的。
比如,在画面load的时候,你这样alert

>       alert(1);
>       setTimeout(function(){alert(2); }, 0); 
>       alert(3);
>       setTimeout(function(){alert(4); }, 0);
>       setTimeout(function(){alert(5); }, 0);
>       setTimeout(function(){alert(6); }, 0); 
>       alert(7);

首先不卖关子,这样的输出结果是
先是1,3,7 这是一定的 然后2,4,5,6这个是不规律乱序的
因为2456的代码被异步执行了。

还有个例子
这个例子也是异步的,让你在keypress的情况下也可以取得输入的值(原本需要再keyup中才能取得)。

document.getElementById("id1").onkeypress = function(){
   document.getElementById('show1').innerHTML = this.value;
  }
document.getElementById("id1").onkeypress = function(){
    setTimeout(function(){
        document.getElementById('show1').innerHTML = this.value;
    },0 );
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值