关于getHomeSlider方法的返回值问题

来源:2-3 幻灯片组件--从服务器端获取数据

Kyrieyoo

2019-09-14 15:31:36

getSliders(){

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

      getHomeSlider().then(data =>{

         this.sliders = data;

      });

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

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

写回答

2回答

好帮手慕星星

2019-09-14

你好,

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

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

自己可以输出测试下。

0

好帮手慕星星

2019-09-14

同学你好,

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

http://img.mukewang.com/climg/5d7ca09f09fa298606290344.jpg可以输出看一下:

http://img.mukewang.com/climg/5d7ca14209137ca304270160.jpg

http://img.mukewang.com/climg/5d7ca1330931621e03780106.jpg

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

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

0
hyrieyoo
h 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对象呀
h019-09-14
共1条回复

0 学习 · 10739 问题

查看课程