怎么让以下代码避免回调地狱 wxqyLogin: function () { var _this = this; wx.qy.login ({ suiteId: '', // 非必填,第三方应用的 suiteid,自建应用不填。若第三方小程序绑定多个第三方应用时,建议填上该字段 success: function (res) { if (res.code) { // 发起网络请求 wx.request ({ url: https://localhost:44342/api/wechat-work-js/code2-session/${res.code}, data: null, method: 'POST', header: {'content-type': 'application/json' // 默认值}, // 请求成功时的处理 success: function (res) { // 一般在这一打印下看看是否拿到数据 console.log ("登录 wx.qy.login", res.data.data); if (res.data.data.errmsg == 'ok') { _this.globalData.corpid = res.data.data.corpid; _this.globalData.userid = res.data.data.userid; _this.globalData.session_key = res.data.data.session_key; //console.log (_this.globalData) } else { wx.showToast ({ title: ' 登陆失败 ', icon: 'none', mask: true }); } } }) } else { console.log (' 登录失败!' + res.errMsg) } } }); },
时间: 2024-04-27 09:19:43 浏览: 114
以下是使用 Promise 的改写方法:
```
wxqyLogin: function () {
var _this = this;
wx.qy.login({
suiteId: '', // 非必填,第三方应用的 suiteid,自建应用不填。若第三方小程序绑定多个第三方应用时,建议填上该字段
})
.then(res => {
if (res.code) {
return wx.request({
url: `https://localhost:44342/api/wechat-work-js/code2-session/${res.code}`,
data: null,
method: 'POST',
header: {'content-type': 'application/json'},
});
} else {
throw new Error(`登录失败!${res.errMsg}`);
}
})
.then(res => {
console.log("登录 wx.qy.login", res.data.data);
if (res.data.data.errmsg == 'ok') {
_this.globalData.corpid = res.data.data.corpid;
_this.globalData.userid = res.data.data.userid;
_this.globalData.session_key = res.data.data.session_key;
} else {
throw new Error('登陆失败');
}
})
.catch(error => {
console.error(error);
wx.showToast({
title: '登陆失败',
icon: 'none',
mask: true
});
});
},
```
使用 async/await 的改写方法:
```
wxqyLogin: async function () {
try {
const res1 = await wx.qy.login({suiteId: ''});
if (res1.code) {
const res2 = await wx.request({
url: `https://localhost:44342/api/wechat-work-js/code2-session/${res1.code}`,
data: null,
method: 'POST',
header: {'content-type': 'application/json'},
});
console.log("登录 wx.qy.login", res2.data.data);
if (res2.data.data.errmsg == 'ok') {
this.globalData.corpid = res2.data.data.corpid;
this.globalData.userid = res2.data.data.userid;
this.globalData.session_key = res2.data.data.session_key;
} else {
throw new Error('登陆失败');
}
} else {
throw new Error(`登录失败!${res1.errMsg}`);
}
} catch (error) {
console.error(error);
wx.showToast({
title: '登陆失败',
icon: 'none',
mask: true
});
}
},
```
这样做可以让代码更加清晰易读,避免回调地狱的嵌套。
阅读全文