使用$http
服務撥打電話時,如果用戶在呼叫仍處於進行中時離開該頁面,則看起來HTTP請求被中止,並且承諾呼叫其error()
處理程序。然而,我似乎無法弄清楚如何檢測何時發生此錯誤的實際問題是從遠程服務器(服務器關閉,網絡關閉,超時等)收到響應,而不是由於用戶導航。這兩種情況似乎都將相同的虛擬空響應狀態參數傳遞給錯誤處理程序。 (data
爲空,status
爲0等)。
我認爲使用beforeUnload
事件處理程序來檢測的導航和假設遇到任何錯誤後,該事件應該被忽略,但是,是不是在移動Safari瀏覽器支持這一事件,也許還有其他的瀏覽器,所以它是一個不可靠的解決方案。
這似乎是一個普遍的問題 - 人們通常如何處理它?
但是,這隻會檢測到當前頁面內的位置的變化,e.q.查詢/散列更改將被用於頁面內ajax應用程序導航?這似乎是它的目的。我遇到的問題是,當用戶導航到一個全新的URL(如非現場鏈接)時,我的角度應用程序的$ http錯誤處理程序正在被調用,所以用戶在離開頁面之前就會出現錯誤。 FWIW演示程序似乎沒有記錄這種導航,鏈接:http://browserstate.github.io/history.js/demo/ – Yetanotherjosh