请老师解答,谢谢

请老师解答,谢谢

图片描述

  1. 117行的resolve()为什么不能放在115和116行之间?有点不太理解
  2. 为什么127行和130行的return不能省略而133行省略了也不会影响特效?不是默认也可以返回成功状态,和这个return返回的成功状态有什么区别?

正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学你好,解答如下:

1、resolve写在哪,要看需要它在哪里执行。我们的逻辑是,在move方法中执行resolve,所以需要将resolve放到函数中传给move方法,即写在117行。

2、3个then中,都不写return,那么每个then可以默认返回成功状态。但是状态的改变时间差太小了,即第一个then执行完,第二个then就会立马执行。两个then中,movePromise方法产生的动画会发生叠加现象,实际效果与预期不符。写了return之后,后一个then会等待前一个then中动画执行完再执行,即动画效果是“第一个动画执行完,再执行第二个动画”这是我们想要的效果。

最后一个then中的动画执行完,就结束了,后面没有其他动画了,所以最后一个then中可以不写return。

祝学习愉快!

  • 慕勒8540250 提问者 #1

    老师,能再解释下“但是状态的改变时间差太小了”?

    2023-01-13 21:02:04
  • 好帮手慕久久 回复 提问者 慕勒8540250 #2

    为了方便理解,我们可以这样想:

    如果不写return,第一个then中movePromise方法一调用,该then就立马返回成功状态,此时第二个then就会接受到这个状态开始执行第二个then中的movePromise方法。假设第一个then中的movePromise是在12点01分01秒执行的,那么第二个then中的movePromise方法可能就是12点01分02秒执行的,二者之间只差1s(时间差很小)。但是movePromise中元素移动产生的动画效果,需要3s执行完,即第二个then中的动画开启时,第一个then中的动画还没执行完呢,两个动画重叠了,所以动画效果会有问题。

    2023-01-14 10:13:03
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师