老师,我分析对的吗

老师,我分析对的吗

https://img1.sycdn.imooc.com//climg/6276787409e1663106480621.jpg

①返回的promise对象是一个成功状态,所以在方块x移动了150px之后,会执行then②,此时就是一个异步操作。then②执行完后同样返回了一个也是成功状态的promise对象,所以then③中不应该是异步吗?这里不考虑js执行速度,至少我的理解是应该可以看到方块移动到y:150的位置,但并不是这样啊,这是我不明白的一个场景。因为then③中没有return,就不知道是成功状态还是失败状态,所以then④中的代码就是同步执行的,但因为渲染速度快,时间上就被忽略不计了


并且在这一段代码中,最后一个then,也就是④中的return加不加都是无所谓的,因为接下来没有then了

正在回答 回答被采纳积分+1

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

2回答
好帮手慕慕子 2022-05-08 10:20:13

同学你好,对于你的问题解答如下:

1、下图所示这句话理解有误,movePromise中return返回的Promise,此时并不知道是成功还是失败状态的,只有等到过渡完成后,调用传入move方法中的第三个参数(函数),执行里面的resolve方法时,才会改变movePromise中return返回的Promise实例为成功状态

https://img1.sycdn.imooc.com//climg/6277271f09c79e7c09580658.jpg

2、下图所示划线的理解有歧义,可以结合第一条解析理解,这里添加return并不是为了返回成功状态,而是返回一个pending状态的Promise实例,当执行resolve时,才改变为成功状态,执行对应的then方法

https://img1.sycdn.imooc.com//climg/62772825093fb7d908350103.jpg

3、最后补充里的理解是没有问题的

祝学习愉快~

阿惹 提问者 2022-05-07 22:45:01

如果不加return,会默认返回一个成功状态的promise的对象,加return也是为了返回成功状态,那加不加的区别具体体现在哪儿呢。我现在能区分开的就是加了return,then中是异步的,不加return就是同步的。这块太套了,我有点理不清了

  • 提问者 阿惹 #1

    老师,补充下,如果then方法中不加return,默认返回成功状态,就是说,不等当前then方法中这段代码执行的怎么样(以这段代码说就是是否移动成功,如果是前后端通信,那就是是否接收到后端传来的数据),js都不会关心,因为它已经提前定死了是成功状态,那执不执行就不重要了,反正就是告诉接下来then方法中的代码,你们都是同步的,除非再遇到return。那如果是加了return,js也就不敢断定一定是成功状态了,js会等方块移动到指定位置,或者是前端完全接收到后端传来的数据之后再去判断这才是成功了,js才可以告诉下一个then中的代码,前面的没问题,该轮到你们执行了。https://img1.sycdn.imooc.com//climg/62768e0d090c3bbc10400711.jpg

    以上有理解偏差的地方,老师帮忙纠错下

    2022-05-07 23:20:57
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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