请问一个关于promise对象的问题

请问一个关于promise对象的问题

请问调用含有promise对象的函数都一定要把该函数返回么?比如下面这个函数

getHotKeyword(){
				return getSearchHotKeyword().then(data => {
					return new Promise(resolve => {
						if(data){
							this.hots = data;
							resolve();
						}
					})
				})
			}

我试着把第一个return去掉 页面上没有什么变化 但是浏览器会报错 说then不是一个函数。

因为从函数的功能上来说,我觉得在then里面返回一个promise对象似乎已经可以达到目的了,因为对于调用getHotKeyword()的函数来说,它只需要得到getHotKeyword().then()这个then里面的数据就可以了吧,而且这个then里还有一个promise对象,可以让它继续then

上面那段话肯定是错的,所以想请问下第一个return存在的意义是什么。非常感谢!

正在回答

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

2回答

同学你好,不行的哦。

getSearchHotKeyword()执行完会有的一个promise对象,但是调用getHotKeyword()并没有得到这个对象哦(没有return的情况下)。调用函数得到的是函数的返回值,没有return的话,会默认返回undefined,undefined后面是没有办法接着使用then方法的。

同学可以参考如上输出下,调用getHotKeyword()的结果。

祝学习愉快!

  • hpbrave 提问者 #1
    好的,非常感谢!
    2019-01-09 11:14:41
好帮手慕糖 2019-01-09 10:32:39

同学你好,调用函数得到的是函数的返回值,这里调用返回getHotKeyword(),得到的是返回值会是一个promise对象,所以才可以接着使用.then方法哦。

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

若没有return的话,会默认返回undefined,返回undefined的话,getHotKeyword()后面是没有办法接着使用.then方法的哦。可以在如下输出测试下,看下有没有return输出结果区别。

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

希望能帮助到你,欢迎采纳。

祝学习愉快!

  • 提问者 hpbrave #1
    请问一下,当执行getHotKeyword()时,是不是先执行getSearchHotKeyword(),然后执行then,这样的话,难道不是也返回一个promise对象么。。。对于调用getHotKeyword的函数来说,如果没有第一个return,得到的是不是then里面那个promise呢? 这样也不行么
    2019-01-09 10:45:55
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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