搞不懂有几个步骤

搞不懂有几个步骤

methods: {
   getRecommend() {
     if (this.curPage > this.totalPage) return;
     getHomeRecommend(this.curPage).then(data => {
       // 如果jsonp请求失败,在home.js中暴露的getHomeRecommend方法中,请求失败传递的data参数是undefined,所以要判断resolve(data)中传递的data参数是有数据还是undefined
       if (data) {
         // data是home.js中暴露的getHomeRecommend方法返回的promise对象中resolve(data)传递的数据,即是请求回来的数据
         console.log(data);
         this.curPage++;
         // 根据请求的数据中的页数,更新总共页数
         this.totalPage = data.totalPage;
         // 克隆返回来的数据中itemList数组
         this.recommends = this.recommends.concat(data.itemList);
       }
     });
   }
 }
};


为什么要克隆itemList数组而不是直接this.recommends=data.itemList?

this.curPage++;当前页只是加1了吗?为什么要+1?是每滑动一段距离发起jsonp请求,所以当前页加1,所以是一段时间就触发jsonp才页码+1的意思是吗?

正在回答 回答被采纳积分+1

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

1回答
好帮手慕言 2019-08-01 19:32:44

同学你好,

1、同学你好,这里不是克隆哦,concat() 方法用于连接两个或多个数组

data.itemList是请求过来的数据。

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

this.recommends里面存放的是已经请求来的的数据。

 this.recommends = this.recommends.concat(data.itemList);这句话也就是说把已经请求来的数据和当前次请求的数据连接起来,赋值给this.recommends,

结果也就是第一次请求来20条放到recommends这个数组里面(数组的长度是20),第二次又请求来20条数据,放到recommends数组里面(此时数组的长度就是40了),打印一下:

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

以此类推

2、同学理解的是正确的,只加了1,因为发起一次请求 ,就请求了一页的数据。

比如初始时 默认为1,去请求第一页,下次请求时,就去请求第二页的数据,所以页码就加1,

同学遇到不懂的地方,可以打印一下,就明白了。

如果帮助到了你,欢迎采纳~祝学习愉快~

问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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