위챗 애플릿 - 예외 처리 요청

4655 단어 위챗 애플릿
스스로 궁리한 처리 방법 에 결함 이 있으면, 제기하는 것 을 대단히 환영하며, 우리 는 함께 진보할 것 이다
대략적인 사고방식:
접속 요청 실패 -->장애 원인 확인(요청 시간 초과?네트워크 예외?기타?) -->사용자에게 직접 프롬프트
요청 연결 성공 -->비token 문제 (code 보고서 200500 등) -->정상 프로세스 걷기
-->token 문제(code가token이상약정한code를 보고할 때 우리는 700701을 사용합니다)
-->자동 터치 로그인 인터페이스,
로그인 인터페이스가 정상으로 돌아가면token이상 요청을 다시 보냅니다. 요청이 더 이상 이상하면 정상적인 절차를 밟고 로그인을 터치하지 않습니다.
로그인 인터페이스에서 이상을 되돌려주고token이상에 피드백하는 이 요청 함수는 정상적인 절차를 밟고 이 알림의 힌트를 주고 무엇을 해야 하는지, 무엇을 해야 하는지.
 
코드
//       token     
const getUserAppointment = (status, success, fail, complete,loginRequestNum) => {
  loginRequestNum = loginRequestNum ? loginRequestNum : 0;   // token   ,       
  //      token     ,        
  loginCheck(login => {
    if (login) {
      wx.request({ 
        url: url + '/user/piAppointment',
        method: 'POST',
        header: {
          'Authorization': 'Bearer ' + wx.getStorageSync('loginInfo').token
        },
        data: {
          "status": status
        },
        success: function (res) {
          if (res.data.code != 701 && res.data.code != 700) {
            success ? success(res) : ''
          }else{
            if (loginRequestNum < 1) {
              loginRequestNum = loginRequestNum + 1;
              tokenRefreshCheck(res.data.code, checkResult => {
                if (checkResult) {    //   true         
                  getUserAppointment(status, success, fail, complete,loginRequestNum)
                } else {              //   false,        ,        
                  success ? success(res) : ''
                }
              });
            } else {
              //         ,token    ,       ,        
              success ? success(res) : ''
            }
          }
        },
        fail: function (res) {
          fail ? fail(res) : '';
          //           
          requestFail(res);
        },
        complete: function (res) {
          complete ? complete() : '';
          
        },
      })
    }
  })
};

//         
const requestFail = (res) => {
  if (res.errMsg.indexOf('time out') > -1 || res.errMsg.indexOf('timeout') > -1) {
    wx.showToast({
      title: '    ,       ',
      icon: 'none'
    })
  } else if (res.errMsg.indexOf('connect error') > -1) {
    wx.showToast({
      title: '      ,     ',
      icon: 'none'
    })
  } else {
    wx.showToast({
      title: '      ,     ',
      icon: 'none'
    })
  } 
};

//             token  
const tokenRefreshCheck = (code, complete) => {
  if (code == 701 || code == 700) {
    //              
    wxLogin(res => {
      if (res.data.code != 200) {
        complete ? complete(false) : '';
      } else {
        if (res.data.data.token) {
          complete ? complete(true) : '';
        } else {
          complete ? complete(false) : '';
        }
      }
    }, fail => {
      complete ? complete(false) : '';
    });     
  }
};


//       
const wxLogin = (success, fail, complete) => {
  wx.login({
    success: res => {
      wx.request({
        url: url + '/wx/login/jsCode',
        data: { "jsCode": res.code },
        method: 'POST',
        success: function (res) {
          if (res.data.code == 200) {
            wx.setStorageSync("loginInfo", res.data.data);
          }
          success ? success(res) : '';
        },
        fail: function (res) {
          requestFail(res);
          fail ? fail(res) : '';
        },
        complete: function (res) {
          complete ? complete() : ''
        }
      })
    }
  })
};

//          
const loginCheck = (complete)=>{
   // token        ,        ,  token
  if (!wx.getStorageSync('loginInfo').token){
    console.log('        ')
    //              
    wxLogin(res => {
      if(res.data.code != 200){
        wx.showToast({title: '    ', icon: 'none'})
        complete ? complete(false) : '';
      }else{
        if (res.data.data.token){
          complete ? complete(true) : '';
          app.globalData.loginInfo = res.data.data;
        }else{
          complete ? complete(false) : '';
        }
      }
    }, fail => {
      wx.showToast({ title: '    ', icon: 'none' })
      complete ? complete(false) : '';
    });           
  }else{
    complete ? complete(true) : '';
  }
};

좋은 웹페이지 즐겨찾기