問題
在使用wx.request方法向後臺請求數據時,爲了用戶體驗,當後臺出現異常,無法請求到數據時,此時可以考慮從緩存中取出以往的數據,但是我在測試緩存的方法時,出現了wx.request的fail回調函數執行了兩次的問題。
測試代碼
做個測試代碼:
//js文件
Page({
onLoad:function()
{
wx.request({
url:'http://wxcms.com/getList',
header:{
'content-type':'application/json'
},
success:function()
{
console.log('This is success function')
},
fail:function()
{
console.log('This is fail function')
}
})
}
})
此時服務器是沒有啓動的,理想執行效果應該只出現一次 ‘This is fail function’ ,但實際上去出現了兩次,結果如圖:
原因
後面查找原因發現是因爲app.json在配置時候,配置了request的超時時間,如圖:
也就是說,request在向後臺請求數據時,無法鏈接後臺,此時fail回調方法執行一次,在request超時時,fail回調方法再次執行一次
驗證
在去掉request的超時時間的配置後,再次測試,fail回調函數只執行一次
總結
在實際運用中,爲了更好的用戶體驗,一般不需要額外配置request的請求超時時間,用默認超時時間就好。如果有需求要重新配置超時時間,同時又需要用到fail的回調函數,那麼需要處理下fail的回調函數,此時就要看具體情況了。