微信小程序之随机数
我们的需求是用户是第一次进入或是选择拍照时给出一条随机文案
而当再一次进入或是选择同一张相片时,我们需要给出当时给用户展示的文案
随机数的语句是这样写的
//我规定随机数的大小不能大于文案的长度
var a = Math.floor((Math.random() * list.length))
根据需求我们就需要把当时展示给用户的那一条文案存入缓存,方便比对
//判断用户点击的是拍照还是选择相片
//num=0的话是用户选择了拍照
if (num == 0) {
//拍照永远给出随机文案
console.log(a)
this.setData({
list: list[a],
a: a
})
//将这次结果存入缓存
wx.setStorage({
data: list[a],
key: 'camera',
})
//否则用户选择了选择相片
} else {
//从缓存试提取文案,如果有代表用户并不是第一次进入
wx.getStorage({
key: 'message',
success: (res) => {
//从缓存中取出照片大小进行比对
wx.getStorage({
key: 'photo1',
success: (res) => {
photo1 = res.data
//如果照片大小相同
if (t == photo1) {
//取出文案并设置到界面
wx.getStorage({
key: 'message',
success: (res) => {
list = res.data
this.setData({
list: list,
a:a
})
}
})
//如果不同的话代表用户选择的不是同一张相片
} else {
//调用随机数
this.setData({
list: list[a],
a: a
})
//存入缓存
wx.setStorage({
data: list[a],
key: 'message',
})
}
}
})
},
//从缓存试提取失败代表用户是第一次进入
fail: (err) => {
//调用随机数
this.setData({
list: list[a],
a: a
})
//存入缓存
wx.setStorage({
data: list[a],
key: 'message',
})
}
})
}
我们根据需求来理清逻辑,如果用户第一次进入那么在缓存中就没有存入文案,所以第一步就是从缓存中试提取文案,如果没有代表用户第一次进入,第一次进入就给出一个随机数并把文案存入缓存。 如果从缓存当中获取到了文案,那么就需要比对照片的大小来进行判断是否是同一张照片,如果是同一张照片的话那么就给出同一条文案,如果不同的话那就再次给出随机数并将文案存入缓存。