关于getHomeSlider方法的返回值问题

关于getHomeSlider方法的返回值问题

getSliders(){

      // this.sliders = getHomeSlider();   ??为什么这样写不行

      getHomeSlider().then(data =>{

         this.sliders = data;

      });

代码这样子写的话: this.sliders = getHomeSlider(),为什么不能直接获取要的data?而要再.then()呢?

getHomeSlider()这个函数的返回值不是then里面return的内容吗?

正在回答

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

2回答

你好,

非常抱歉,第一次给你解释的有点问题,让同学有了误解。

因为axios是基于promise的,使用axios后会返回一个promise,即使then中直接return了数据,最终外层return的是一个带有数据的promise:http://img1.sycdn.imooc.com//climg/5d7cc7ba09328edd08540350.jpg

自己可以输出测试下。

好帮手慕星星 2019-09-14 16:14:39

同学你好,

getHomeSlider()这个函数的返回值是then里面return的内容,最终返回的是一个promise:

http://img1.sycdn.imooc.com//climg/5d7ca09f09fa298606290344.jpg可以输出看一下:

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

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

一个带有数据的决议成功的promise对象,value中是获取的数据,所以直接方法的结果不是数据,而是promise,需要使用then方法输出获取的数据。

自己可以测试理解下,祝学习愉快!

  • 提问者 Kyrieyoo #1
    export const getHomeSlider = ()=>{ return axios.get('http://www.imooc.com/api/home/slider',{ timeout:5000}) .then(res =>{ if(res.data.code ===0){ return res.data.slider; } throw new Error('获取数据失败'); }) 我只写了第一个then,如果getHomeSlider()这个函数的返回值是then里面return的内容的话,返回的不是应该是res.data.slider吗,不应该是一个promise对象呀
    2019-09-14 16:31:26
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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