This commit is contained in:
lik
2026-09-03 11:35:21 +08:00
parent f8f7afceb8
commit b4c8bf0add
45 changed files with 2989 additions and 426 deletions
+38 -9
View File
@@ -28,22 +28,51 @@ App({
},
onShow(options) {
wx.login({
success: (res) => {
if (res.code) {
// 每次回前台重新登录刷新用户信息;进行中的页面请求会复用同一次登录
this.signin();
},
/** 执行登录,返回可复用的 Promise(避免页面请求早于登录完成的竞态) */
signin() {
if (this._loginPromise) return this._loginPromise;
this._loginPromise = new Promise((resolve, reject) => {
wx.login({
success: (res) => {
if (!res.code) {
this._loginPromise = null;
return reject(new Error('wx.login 未返回 code'));
}
API.user.wxSignin({ code: res.code })
.then((data) => {
if (data.code == 0) {
this.globalData.user = data.data.user
this.eventBus.emit('user-login', data.data.user)
this.globalData.user = data.data.user;
this.eventBus.emit('user-login', data.data.user);
resolve(data.data.user);
} else {
console.log('登录失败!')
this._loginPromise = null;
reject(new Error(data.msg || '登录失败'));
}
})
} else {
.catch((err) => {
this._loginPromise = null;
reject(err);
});
},
fail: (err) => {
this._loginPromise = null;
reject(err);
}
}
})
});
});
return this._loginPromise;
},
/** 保证已登录:已有用户信息立即返回,否则等待登录完成 */
ensureLogin() {
if (this.globalData.user) return Promise.resolve(this.globalData.user);
return this.signin();
},
/** 全局事件总线 */