async getToken() { if (!wx.getStorageSync('token')) { const code1 = await wx.login({ success: async (res) => { // 使用箭头函数 try { const res2 = await wx.request({ method: 'POST', url: 'https://fg.shadimanla.cn/api/get-openid/'+ res.code, success: (res) => { // 使用箭头函数 wx.setStorageSync('token', res.data.token); wx.setStorageSync('secret_key', res.data.secret_key); }, fail: (err) => { // 使用箭头函数 console.error('获取 token 失败:', err); } }); } catch (err) { console.error('请求失败:', err); } }, fail: (err) => { // 使用箭头函数 console.error('登录失败:', err); } }); } }, 改正代码
时间: 2024-02-15 11:28:36 浏览: 108
根据你提供的代码,我看到你的函数没有返回值。为了让函数能够返回正确的值,你可以将其改写成如下形式:
```
async getToken() {
return new Promise((resolve, reject) => {
try {
// 判断缓存中是否存在 token
if (!wx.getStorageSync('token')) {
wx.login({
success: async (res) => {
try {
const res2 = await wx.request({
method: 'POST',
url: 'https://fg.shadimanla.cn/api/get-openid/' + res.code,
success: (res) => {
wx.setStorageSync('token', res.data.token);
wx.setStorageSync('secret_key', res.data.secret_key);
resolve(res.data.token); // 将获取到的 token 返回
},
fail: (err) => {
console.error('获取 token 失败:', err);
reject(err); // 将错误信息返回
}
});
} catch (err) {
console.error('请求失败:', err);
reject(err); // 将错误信息返回
}
},
fail: (err) => {
console.error('登录失败:', err);
reject(err); // 将错误信息返回
}
});
} else {
resolve(wx.getStorageSync('token')); // 如果缓存中已经存在 token,直接返回
}
} catch (err) {
console.error('获取 token 失败:', err);
reject(err); // 将错误信息返回
}
});
}
```
以上代码中,将整个函数包裹在一个 `Promise` 对象中,使其能够返回一个异步操作的结果。在获取到 token 后,通过 `resolve` 将其返回;在出现错误时,通过 `reject` 将错误信息返回。同时,如果缓存中已经存在 token,直接返回缓存中的值即可。
阅读全文