对于同步代码和异步代码问题的理解
同步代码就是代码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对象说起了吧。有待学习研究中...