return

return

cook()
.then((data)=>{
    return eat(data);
})
.then((data)=>{
    return wash(data);
})
.then((data)=>{
    console.log(data);
})

老师,加return是正确的结果,不加return就不一样了,这是为什么

正在回答

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

3回答

同学你好,

1,将结果作为参数传递给第二个函数中的结果指的是:

http://img1.sycdn.imooc.com//climg/5d7783ba0001085e08210755.jpg

2,加不加return都会受定时器影响的哦,promise是异步的,不加return的时候,会同时执行因此下图中圈中的两个没有放在定时器中,会和做饭完毕一起显示。之后执行延时两秒的内容:吃饭完毕!洗碗完毕!

http://img1.sycdn.imooc.com//climg/5d7786090001e68408680751.jpg

如果我的回答帮助了你,欢迎采纳,祝学习愉快~


  • 光aaaaand影 提问者 #1
    好的谢谢老师明白了,我这波问答太长了哈哈,老师辛苦了
    2019-09-11 08:12:36
好帮手慕嘟嘟 2019-09-10 17:55:35

同学你好,

1,吃饭完毕和洗碗完毕是写在延时计时器中的,会有2s的延时,因此会直接显示开始洗碗。

http://img1.sycdn.imooc.com//climg/5d7770c90001523811310495.jpg

2,不管在then中有没有return,then都会返回一个promise实例,是正确的,不加return返回的promise对象不会将结果作为参数传递给下一个函数,链式then的第二个函数中无法使用第一个函数中的值(没传过来就是undefined),而添加return,就会将返回的结果作为参数传递给第二个回调函数,第二个函数就可以直接使用第一个中传过来的参数了。

如果我的回答帮助了你,欢迎采纳,祝学习愉快~


  • 提问者 光aaaaand影 #1
    “不加return返回的promise对象不会将结果作为参数传递给下一个函数”,老师,这句话中的‘结果’究竟指什么,如果只是指参数,那我还是不明白为什么加上return会影响执行结果顺序的改变,为什么加上return,结果就不受setTimeout的影响了呢?老师,我对于return对顺序的改变很纠结,不知道老师能不能感受到我的疑惑哈哈
    2019-09-10 18:42:29
好帮手慕嘟嘟 2019-09-10 16:36:02

同学你好,

return会将第一个回调函数执行完成的结果作为参数,传递给第二个回调函数。

http://img1.sycdn.imooc.com//climg/5d775fbf000194e712470773.jpg

如果我的回答帮助了你,欢迎采纳,祝学习愉快~


  • 提问者 光aaaaand影 #1
    老师,我能明白参数的传递。我不明白的是当我去掉return的时候,为什么执行结果的顺序变了,变成开始吃饭,开始洗碗,而不是开始吃饭 吃饭结束。另外有一点不明白:不管在then中有没有return,then都会返回一个promise实例,只不过这两种情况返回的promise实例有什么区别呢?
    2019-09-10 17:32:33
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星

相似问题

登录后可查看更多问答,登录/注册

热门框架Vue开发WebApp 18版
  • 参与学习           人
  • 提交作业       209    份
  • 解答问题       3299    个

本路径是通过ES6基础知识、运用Zepto、Swiper、fullPag等移动端常用工具包、以及当下流行框架Vue,结合多个实战案例,还原真实开发场景,最终实现手机端购物商城网页开发。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

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