在項目中有切換月份進行網絡請求數據刷新頁面,從而就會出現先發得網絡請求後回來的問題,如何解決呢,在同事的指導下加臨時變量解決了這個問題。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 //延時時間
);
}
}
感覺網絡發出去以後,類似多線程,還是沒明白,有待進一步探索。