看了别的同学提问,还是有一个问题不太懂
调用函数movePromise()盒子进行完移动后该函数返回一个promise对象,并且这个对象已经调用resolve(),此时该对象打点调用then()方法并执行第一个回调函数,该回调函数内又执行了函数movePromise(),盒子进行第二次移动,并返回一个promise对象,并且这个对象已经调用resolve(),我的问题是为什么要把这个promise对象,用return返回呢,
不用return返回该对象,不是自动返回一个promise对象吗并且也是默认执行then的第一个回调函数,请老师帮忙解答一下。
25
收起
正在回答
2回答
同学你好,再补充一点:对于then方法默认返回的promise对象,其会立即变为成功状态;
而movePromise方法中,只有当执行完move方法后才会变为成功状态,如下:
1 | const movePromise = (el, point) => {<br> return new Promise(reslove => {<br> move(el, point, () => {<br> resolve(); // move执行完成后,才会在回调函数中执行resolve()改变状态<br> });<br> })<br>}<br> |
因为下一次移动,需要等到上一次移动完毕才能继续移动,也就是要等到move方法执行完毕,才能执行resolve()改变状态(当状态改变时,then方法才会执行)。所以后面then方法的执行,需要由movePromise对象的状态决定,而不能由默认返回的promise对象的状态决定。因此,需要使用return手动返回movePromise。
祝学习愉快!
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧