⼩程序关于打印数组为空,数组长度为0的问题
⼩程序关于打印数组为空,数组长度为0的问题
踩坑
今天在做项⽬测试时,偶然发现了⼀个关于数组的问题。⼀开始让我有点疑惑和奇怪,但是发现其实是⼀个⼩问题。
需求描述:前端从后台数据库发送request请求,获取数据,存到本地数组。再将本地数组的数据渲染出来,以为⽤户显⽰数据。
问题描述:我在发送request请求后,将数据存到数组后。console.log(array)去输出数组,console.log(array.length)输出数组的长度,发现数组是空数组,长度也为0.
出现问题的代码
通过request请求,获取未完成的作业列表和已完成的作业列表,分别是res.data.data.homeworkNoCompleteList和
res.data.data.homeworkYesCompleteList,并⽤setData函数存到本地数组中。
但是!!通过console.log()打印出来的数组是空,数组长度都是0。
url:'某url',
data:{
student_id:'学号',
},
method:'POST',
header:{
'content-type':'application/x-www-form-urlencoded'
},
success:function(res){
console.log(res.data)
that.setData({
homeworkNoCompleteList: res.data.data.homeworkNoCompleteList,
homeworkYesCompleteList: res.data.data.homeworkYesCompleteList,
// homeworkNoNumber: that.data.homeworkNoCompleteList.length,
// homeworkYesNumber: that.data.homeworkYesCompleteList.length,
// examNoNumber: amNoCompleteList.length,
令数组全部的值为0// examYesNumber: amYesCompleteList.length,
// discuss_number: that.data.discusslist.length
})
console.log(that.data.homeworkYesCompleteList.length)
}
})
// 获取需完成作业、已完成作业、需完成考试、已完成考试的数量
console.log(this.data.homeworkYesCompleteList)
console.log(this.data.studentStatus);
console.log(acherStatus);
console.log(this.data.homeworkNoNumber);
console.log(this.data.homeworkYesNumber);
console.log(amNoNumber);
console.log(amYesNumber)
接着出现了下⾯这张图的输出情况。
成功获取了数据,能够输出数组,并且在这句语句
console.log(that.data.homeworkYesCompleteList.length)
能够正确输出2,⽽不是0。
在wxml中的代码,我⼜是通过homeworkYesNumber这些数值去判断是否要渲染出东西来,否则在没有数据时还显⽰某些结构,就占⽤空间且不美观。但是,上⾯的代码会让变量为0。于是乎,就是⼀⽚空⽩。
问题出现的原因
在onload函数中,我通过request函数获取数据,但是在下⾯的console.log()却不能如期输出数据。所以我想,在完成onload函数
时,request请求还没有完成。也就是说,还没有把数据存到本地数组⾥,⾃然⽽然数组长度就是0。
问题解决
在request的success中,完成setData操作就好
success:function(res){
console.log(res.data)
that.setData({
homeworkNoCompleteList: res.data.data.homeworkNoCompleteList,          homeworkYesCompleteList: res.data.data.homeworkYesCompleteList,          homeworkNoNumber: that.data.homeworkNoCompleteList.length,
homeworkYesNumber: that.data.homeworkYesCompleteList.length,          examNoNumber: amNoCompleteList.length,
examYesNumber: amYesCompleteList.length,
discuss_number: that.data.discusslist.length
})

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。