在项目中有切换月份进行网络请求数据刷新页面,从而就会出现先发得网络请求后回来的问题,如何解决呢,在同事的指导下加临时变量解决了这个问题。Demo如下:
1.在页面加两个按钮,分别点击按钮,进行延时模拟网络请求
//加一个全局变量
this.msg = ‘’;
//按钮
<TouchableOpacity style= {{marginTop:18,height:50,backgroundColor:'red'}} onPress = {this.goToNextPage}></TouchableOpacity>
<TouchableOpacity style= {{marginTop:18,height:50,backgroundColor:'yellow'}} onPress = {this.goToNextPage1}></TouchableOpacity>
//点击时间
goToNextPage = ()=> {
this.msg = '3';
this.test();
}
goToNextPage1 = ()=> {
this.msg = '4';
this.test();
}
test=()=> {
let msg = this.msg;
Network.sendMessageTest(msg,(result)=>{
if (msg == this.msg ) {
console.warn('数字是一样的' + msg + this.msg);
} else {
console.warn('数字是一样的'+ msg + this.msg);
}
});
}
//模拟网络请求
sendMessageTest = (msg, success,)=> {
if (msg === '4') {
this.timer0 = setTimeout(
() => {
success('这是4');
console.warn('这是4');
},
200 //延时时间
);
}
if (msg === '3') {
this.timer1 = setTimeout(
() => {
success('这是3');
console.warn('这是3');
},
3000 //延时时间
);
}
}
感觉网络发出去以后,类似多线程,还是没明白,有待进一步探索。