2017-07-21 4 views
0

私の現在の状況では、$ httpインターセプタを使用して応答エラーをキャッチし、何か問題が発生したことをユーザーに知らせる簡単なメッセージを表示します。 しかし、今は、ページの読み込み中に送信されたリクエストや、ユーザー自身のアクションによって送信されたリクエスト(エラーメッセージ)のエラーを区別したいと思います。 。ページが完全にロードされたことを知る方法(AJAX要求を含む)

return { 
    responseError: function (response) { 
     // IF THE REQUEST IS FROM A PAGE LOAD 
     // DO SOMETHING 
     // IF THE REQUEST IS NOT FROM A PAGE LOAD 
     // DO SOMETHING ELSE 
     return $q.reject(response); 
    } 
}; 

を、それはもう少し明確にするために:私が持っていると思います$ httpInterceptorの

CASE 1:ユーザーが負荷にページを待っています:

  • REQ 1
  • REQ 2
  • REQ 3が送信される送信され送信され
    • REQ 4がREQ 5 REQ 6
      • REQ 7が送信され送信される4
  • REQの応答後に送信される3
    • REQの応答後に送信されますREQ 6の応答後

上記のリクエストはすべてページの読み込みに含まれ、エラーが返された場合は特定の動作が必要です。ていないため、ページの読み込みのトリガされ

要求:

CASE 2:

  • REQ 2はREQの応答後に送信される送信される1

    • REQ:ユーザーがボタンを押します1

これらの要求arページ読み込みの一部ではなく、エラーの場合は別の方法で動作する必要があります。

どういうわけか私はこれらの2つの場合の違いを生むことができますか? 私のプロジェクトはかなり大きいので、$ httpリクエストのコードを変更してページロードの有無を判断したくないので、それは私の解決策ではありません。

+0

このリンクをチェックアウトhttps://stackoverflow.com/questions/4231580/get-if-browser-is-busy – Nicolas

+0

ページ・loada、と何を意味するか定義します(パーシャルのHTML、およびその他の資産?) 。テンプレートを読み込んだり失敗したりするときにいくつかのメッセージを飾ることで例外をキャッチしようとしている人はいますか? –

答えて

0

あなたは何らかの種類の表現や正規表現を作成し、希望のURLから来たものかテストして選択することができます。

.service('RequestsInterceptor', [ 
'$q', 
function(
    $q, 
) { 
    var UNAUTHORIZED_CODE = 401; 
    var FORBIDDEN_CODE = 403; 
    var NOTFOUND_CODE = 404; 
    var INTERNAL_ERROR = 500; 

     this.request = function(config) { 
      //logic to send 
      return config || $q.when(config); 
     }; 
     this.responseError = function(rejection) { 

      console.log(rejection.config.url) 

      var apiPattern = /\/api\//; 

      if(apiPattern.test(rejection.config.url)) { 
       //do your logic when url are api 
      }else{ 
       //do your logic when url are templates 
      } 
      return $q.reject(rejection); 
     }; 
    } 
]); 
関連する問題