index.js
2.67 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
import request from '../../utils/request'
Page({
/**
* 页面的初始数据
*/
data: {
bannerList: [], // 轮播图数据
recommendList: [], // 推荐歌单
topList: [], // 排行榜数据
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: async function (options) {
let bannerListData = await request('/banner', {type: 2});
this.setData({
bannerList: bannerListData.banners
})
// 获取推荐歌单数据
let recommendListData = await request('/personalized', {limit: 10});
this.setData({
recommendList: recommendListData.result
})
// 获取排行榜数据
/*
* 需求分析:
* 1. 需要根据idx的值获取对应的数据
* 2. idx的取值范围是0-20, 我们需要0-4
* 3. 需要发送5次请求
* 前++ 和 后++的区别
* 1. 先看到是运算符还是值
* 2. 如果先看到的是运算符就先运算再赋值
* 3. 如果先看到的值那么就先赋值再运算
* */
let index = 0;
let resultArr = [];
while (index < 5){
let topListData = await request('/top/list', {idx: index++});
// splice(会修改原数组,可以对指定的数组进行增删改) slice(不会修改原数组)
let topListItem = {name: topListData.playlist.name, tracks: topListData.playlist.tracks.slice(0, 3)};
resultArr.push(topListItem);
// 不需要等待五次请求全部结束才更新,用户体验较好,但是渲染次数会多一些
this.setData({
topList: resultArr
})
}
// 更新topList的状态值, 放在此处更新会导致发送请求的过程中页面长时间白屏,用户体验差
// this.setData({
// topList: resultArr
// })
},
// 跳转至recommendSong页面的回调
toRecommendSong(){
wx.navigateTo({
url: '/songPackage/pages/recommendSong/recommendSong'
})
},
// 跳转至other页面
toOther(){
wx.navigateTo({
url: '/songPackage/pages/other/other'
})
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady: function () {
},
/**
* 生命周期函数--监听页面显示
*/
onShow: function () {
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide: function () {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload: function () {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh: function () {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom: function () {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage: function () {
}
})