vue-resourceブロッキングの使用

1207 ワード

vueプロジェクトでvue-resourceを使用してインタフェースを呼び出す過程で、任意のページでhttpリクエストを呼び出す必要があると仮定すると、インタフェースリクエストが成功する前にloadingが現れ、インタフェースが応答してresponseに戻ったときにloadingが非表示になります.ページごとにhttpリクエストが追加されると、コードの冗長性と重複ワークロードになります.インタフェースをリクエストするたびに、統一的に処理して、各インタフェースに戻る方法はありませんか.vue-resourcedのinterceptorsは、httpリクエストの応答のたびに生まれます.ブロッキングが設定されている場合、ブロッキング関数が優先的に実行され、応答体が取得され、responseがthenに返されて受信されるかどうかが決定されます.このブロッキングに応答ステータスコードの判断を追加して、ログインページにジャンプするか、現在のページに残ってデータを取得し続けるかを決定することができます.この関数は、appなどのルートコンポーネントに登録するのが一般的である.vue
一般的な書き方は以下の通りです.
Vue.http.interceptors.push((request, next) => {
  // modify request
  request.method = 'POST';//                 
  // continue to next interceptor
  //       then   response         。  session      ,      ,       http           
  next((response) => {
        loading  =  false// loading  ,   vuex   
        if(response.status === 200) {
              ... //         
              return response //     ,      then,    response
        }  else { 
            if (response.status >= 500) {
                //     
            } else if (response.status === 404) {
              ...
            }
            return reponse //     
        }
  });
});