引言
对于开发小程序而言,登录态的维护是不可避免的。下面将抛出某书小程序的解决方案,欢迎大家扔砖。
某书小程序是基于wepy开发,下面的同样适用于小程序原生开发。
对于某书,登录无非就是获取登录态,然后服务于各page,用于打点,获取相应数据,购买等。
因为是每个page都需要,因此如何优化的封装会更简洁?
小程序提供了一系列的注册App,注册Page的生命周期,因此毫无疑问,在注册APP的生命周期中完成获取登录态操作。
But,登录是异步的,如何保持各个page的同步,是的,答案是promise,那么该如何实现?
撸代码
注册App,onLaunch中
注册Page,onLoad中
其实思路很简单,申明全局变量promise,将登录的promise赋值给全局promise变量,然后在各页面init之前 await!
以上的内容是在今年九月初的解决方案,看起来很完美,但是真的很完美嘛?
显然不是。
问题在于,你就确认onLaunch会早于onLoad先运行!
被坑了一把,在早期,小程序中onLaunch的确是会早于onLoad先运行,但是在最新版本却不是了(微信的开发人员也没想过这个问题吧),这尼玛还是在最近运营那边需要统计销量,发现,打点数据中很多缺少用户信息等,然后才发现这个问题。
目前的解决方案,撸代码
注册App,onLaunch中,增加promiseQueue
建立mixin文件,login.js
在page中只需要实现init方法就ok,无需关注登录态细节
本文来自企鹅号 - 前端这么大我想去看看媒体
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文来自企鹅号 - 前端这么大我想去看看媒体
如有侵权,请联系 cloudcommunity@tencent.com 删除。