위챗 애플릿 - 예외 처리 요청
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) : '';
}
};
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
유니앱, 위챗 애플릿에서 MQTT 사용 문제(1)MQTT.js는 JavaScript로 작성된 MQTT 프로토콜의 클라이언트 라이브러리로 Node에 사용할 수 있습니다.js와 브라우저.노드에서.js단은 전역 설치를 통해 명령행 연결을 사용할 수 있으며 MQTT...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.