就是一个循环,要是条件不满足就一直走下去,但是跳转了页面它还走,所以我想把他停止了,就用了从缓存里面去取一个值来结束他,当返回到上级页面的时候,缓存值重新被赋值为1,但是正在后台死循环的这个函数打印出来一直是0 还是结束不了
< navigator class = "kuang" url = "../gerenyemian/grzym/qiang/qiang" >
< image class = "gr_image" mode = "aspectFit" src = "../../image/qiang.png" ></ image >
< view class = "text" >吐槽表白弹幕墙</ view >
< view class = "right-arrow" ></ view >
</ navigator >
|
上面是跳转到这个死循环的方式。
onShow: function(){
wx.setStorageSync('pd', 1);
console.log("xiugai",wx.getStorageSync('pd'));
}
|
上面是返回的时候从父页面的onshow方法里改变缓存的值
for (var i = 0; i < qiang.length ; i++) {
doommList.push(new Doomm(qiang[i].text, Math.ceil(Math.random() * 100), Math.ceil(Math.random() * 10), qiang[i].color, qiang[i]._id));
page.setData({
doommData: doommList
})
console.log("xunhuan ",wx.getStorageSync('pd'));
if (wx.getStorageSync('pd')>0){
break;
}
}
|
上面是死循环的一个函数,doommList.push这个处理东西的可以忽略
单纯看你的第三断代码是不可能无限循环的,除非你还有函数不停地执行第三断代码,js是单线程的,wx.setStorageSync和wx.getStorageSync是同步的,这两个过不了,后面的所有代码就执行不了了,很可能这里出问题了,应该要按官方例子那样写:
try {
wx.setStorageSync('pd', 1);
} catch (e) {}
let pd = null;
try {
pd = wx.getStorageSync('pd');
} catch (e) {}
console.log(pd);
onUnload () {
this.timer && clearTimeout(this.timer);
},
setDoomm () {
let doommList = this.data.doommList;
let qiang = this.data.qiang;
for (var i = 0; i < qiang.length; i++) {
doommList.push(new Doomm(qiang[i].text, Math.ceil(Math.random() * 100), Math.ceil(Math.random() * 10), qiang[i].color, qiang[i]._id));
}
// 此处有问题,不应该写在上面循环体里面,性能优化
this.setData({ doommData: doommList });
},
// 假设此处为你不停执行的函数,类似不停执行请求的函数
getQiang () {
this.timer = setInterval(() => {
this.setData(qiang: qiang, () => {
this.setDoomm();
});
}, 1);
}
弹幕哎