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

对于同步代码和异步代码问题的理解

同步代码就是代码1没执行完不能执行代码2

异步代码就是代码1没执行完也可以直接到代码2,以此类推。

在本章老师的var boy=boywalk( )下的代码就是异步码

咋一看好像是同步,实际上then里的代码没执行完就已经执行下一个代码了

可以这样尝试是否真的如此。如then(这里设置一个动画是增加id="boy"的宽度).then(这里改变id="boy"的背景颜色)。此时执行时你会发现宽度动画没有执行完毕,背景颜色已经被设置。

而老师为什么要加return walkto()呢?为了返回新的对象实现和同步代码一样的效果,就是等待对象的出现在执行下面的代码,此时仍然是异步代码,是异步中等待,等待什么呢就是新对象的出现。比如本章第一return后与第二个return之间的代码就是等待第一个return 返回的对象才能执行,同理第二个return后面的代码也是等待第二个return返回新的对象再执行。所以出现了同步代码效果(实质是异步等待)。

那么移除return后当然也是异步代码啦,为什么移除后直接就编程蓝色呢?因为这些代码执行就是一瞬间的事情,所以异步和同步效果是一样的。

如果移除return默认的第一个对象就是第一个walkto()因为then()函数里面没有返回值的话,执行就执行了,如果有返回的值的话,如果是对象就会从新选择对象执行下面的代码。

这是我的理解了。至于如何实现异步代码,那我还不太懂,那就得从jq的dfd对象说起了吧。有待学习研究中...

正在回答

3 回答

看了文章很有帮助,谢谢楼主分享~ 

0 回复 有任何疑惑可以回复我~

对了我吧我在网上找到的问题的讲解链接放这里http://www.jb51.net/article/28054.htm,大家可以看看帮助理解,很好理解的,我看了这里的讲解发现我上面的理解基本是正确的,为什么要返回deferred对象的.resolve状态就是要告诉.then()里的代码执行的状态,是否完成(deferred.resolve),未完成即一直保持执行状态(deferrde.promise),失败(deferred.reject),这是jquery规定的任意deferred对象都有的三中执行状态。

4 回复 有任何疑惑可以回复我~

希望理解正确,大神们觉得对的给个赞吧,就更加有动力学习了

4 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
H5+JS+CSS3实现七夕言情
  • 参与学习       211524    人
  • 解答问题       540    个

为七夕节准备的H5+JS+CSS3特效案例,由浅入深案例拆分讲解

进入课程

对于同步代码和异步代码问题的理解

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信