老师这里的return为啥不能省略?默认情况下也会执行then啊。

老师这里的return为啥不能省略?默认情况下也会执行then啊。

我测试的是省略了then()方法内 省略return,效果就不一样了

在这里输入代码,可通过选择【代码语言】突出显示

document.addEventListener(

            'click',

            () => {

                movePromise(boxEl, { x: 150 })

                    .then(() => {

                        movePromise(boxEl, { x: 150y: 150 });

                    })

                    .then(() => {

                        movePromise(boxEl, { x: 0y: 150 });

                    })

                    .then(() => {

                        movePromise(boxEl, { x: 0y: 0 });

                    })

            }, false)


正在回答

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

2回答

同学你好,非常抱歉由于老师描述的不严谨给同学造成了误解。

调用then方法时,内部不管有没有设置return,默认都会返回一个新的Promise对象。

如果不加return, movePromise函数内返回的Promise对象,并不会影响到下一个到then方法,所以这里不可以省略return。

祝学习愉快~

好帮手慕慕子 2020-12-11 11:49:51

同学你好,默认情况下确实会调用then方法。省略return后, 后面的几个then方法,都是第一次调用movePromise方法生成的Promise对象来调用的,而promise对象的状态一旦改变之后就不会再发生改变,所以后面的then会立即执行,导致效果不对。而添加了return之后,会返回新的Promise,下一个then方法会在新的promise状态改变之后才执行。

祝学习愉快~

  • 提问者 xiao白做大事 #1

    可是,不写return,不就相当于return underfined吗?

    不写return,p.then也会返回一个新Promise对象吧?

    为什么说是都用的第一个Promise对象

    2020-12-11 15:16:44
  • 提问者 xiao白做大事 #2

    老师讲的是,后面的then是由上一个then返回的对象决定的,即使没写return,也是会返回一个新的Promise对象的呀、

    2020-12-11 15:49:46
  • 慕哥0292637 回复 提问者 xiao白做大事 #3

    then默认返回第一次调用movereturn的默认结果        

    2020-12-16 21:05:07
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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