为了账号安全,请及时绑定邮箱和手机立即绑定

试用zepto时,进程中的alert()会提前执行,为什么?

试用zepto时,进程中的alert()会提前执行,为什么?

jeck猫 2018-09-11 13:35:58
引用了zepto框架,代码1:$('#button').click(function () {   $('.block').show();   alert('a') });运行结果是先alert然后block再显示出来。然后代码做了改进,加了延迟代码2:$('#button').click(function () {   $('.block').show();   setTimeout(function(){      alert('a')   },0) });这时候才是正常顺序,请问为什么会这样?
查看完整描述

1 回答

?
MMTTMM

TA贡献1869条经验 获得超4个赞

之前也看到了相关的解释:大致就是浏览器是根据功能分线程的,比如图形绘制和js是不同的线程。(在这里可以理解为show是异步的)
对于代码一:JS顺序执行show,再执行alert,(最后执行show的显示)。但是show是给图形线程去绘制需要耗时,相当于异步了
对于代码二:settimeout也是异步,所以变成执行show代码,执行setimeout开一个线程,执行show的渲染,最后执行settimeout中的方法也就是alert

查看完整回答
反对 回复 2018-10-23
  • 1 回答
  • 0 关注
  • 737 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号