如何解决app.js与pages异步并行问题?
我想一打开程序就在app.js获取用户信息,然后再执行pages组件的onLoad 网上别人都说是在pages onLoad里判断,但是这也只能解决单个pages组件,我想要全部有拦截怎么处理?总不能一个一个写判断吧! 情况: 1、app.js执行获取登录态,然后再获取用户信息。 2、个别page组件会需要重新获取用户信息,比如:个人中心、购物车等.... 我现在遇到的问题: 如果用户第一次打开的是个人中心,个人中心我会重新请求用户信息,然后没有登录态再重新请求登录态,可是app.js也同时获取登录态和用户信息 ,它们两是并行的,然后都重新获取登录态,就造成了请求两次登录态,简单的程序不会有什么影响,但是程序复杂就有很难控制 请问能不能有什么办法可以在app.js控制pages所有组件的加载问题呢?
//app.js App({ onLaunch: function() { // 登录 wx.login({ success: res => { var app = this; if (res.code) { wx.request({ url: url, method: 'POST', data: { code: res.code }, success: function(res) { app.globalData.userkey = res.data.userkey; //登录后保存 userkey if (app.login) { //是否有保存的事件,有就执行 app.login() } } }) } } }) }, isLogin: function(e) { var app = this; if (app.globalData.userkey) { // 是否已经登录 if (e) { e() // 已登录 直接执行事件 } } else { // 没有登录 保存 传过来的事件 app.login = e } } }) //页面js onLoad: function(options) { agetApp().isLogin(function() { //事件 }) },
在app.js 里面 获取openid,然后请求后端接口,后端根据openid 去判断用户信息,并返回状态。根据返回的状态前端判断处理,是否有用户信息。如果没有用户信息,弹出获取用户信息的按钮,将获取的用户信息和openid 存储。以后页面请求接口。在header里面带着openid就行,剩下就是后端处理逻辑问题了
1、app.js执行获取登录态,然后再获取用户信息。
2、个别page组件会需要重新获取用户信息,比如:个人中心、购物车等....
我现在遇到的问题:
如果用户第一次打开的是个人中心,个人中心我会重新请求用户信息,然后没有登录态再重新请求登录态,可是app.js也同时获取登录态和用户信息,它们两是并行的,然后都重新获取登录态,就造成了请求两次登录态,简单的程序不会有什么影响,但是程序复杂就有问题了
这是两个异步行为,无法确保谁在前谁在后。我提供一个思路:
app.js 正常获取用户信息,拿到用户信息放到内存里。
page.onLoad 从内存里取用户信息,能取到就用,取不到就在重新获取一次
这是个好问题,已站好姿势,等待大佬入场
楼主有什么好的方法吗
https://developers.weixin.qq.com/community/develop/article/doc/000a0aed14c3285bea79e67ee56813
参考一下。
情况:
1、app.js执行获取登录态,然后再获取用户信息。
2、个别page组件会需要重新获取用户信息,比如:个人中心、购物车等....
我现在遇到的问题:
如果用户第一次打开的是个人中心,个人中心我会重新请求用户信息,然后没有登录态再重新请求登录态,可是app.js也同时获取登录态和用户信息,它们两是并行的,然后都重新获取登录态,就造成了请求两次登录态,简单的程序不会有什么影响,但是程序复杂就有问题了
拦截处理?那应该在封装一下请求。如果获取用户信息失败就return?