关于微信小程序执行顺序问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于微信小程序执行顺序问题相关的知识,希望对你有一定的参考价值。
最近在研究微信小程序,由于本人没有js基础,所以对js里函数异步执行很是无力。我在app.js里的wx.login与后台交互了一下,但由于是网络请求,所以导致还没获取返回数据的时候就执行了index.js里的onloud,刚刚发现了模板代码里获取用户信息有这么一段,
wx.getUserInfo(
success: res =>
// 可以将 res 发送给后台解码出 unionId
this.globalData.userInfo = res.userInfo
// 由于 getUserInfo 是网络请求,可能会在 Page.onLoad 之后才返回
// 所以此处加入 callback 以防止这种情况
if (this.userInfoReadyCallback)
this.userInfoReadyCallback(res)
)
貌似是解决这个问题的,但我不是看得太明白,希望有大佬能给我解决一下。
....
doLogin()
if (!wx.getStorageSync("userid") && !wx.getStorageSync("token"))
// 登录
wx.login(
success: res =>
//自己的后台
http.post(
url: "/xxxxxx",
params:
code: res.code
,
success: (data) =>
this.globalData.userInfo = data.userInfo
wx.setStorageSync("userid", data.userid);
wx.setStorageSync("token", data.token);
,
error: (data) =>
)
)
,
....
//这个方法就是,用个定时器,
afterLogin(that, call)
this.loading(that);//菊花图loading组件
if (this.globalData.userInfo)
call()
else
var count = 0;
var t = setInterval(() =>
if (this.globalData.userInfo)
clearInterval(t)
call();
else
if (count >= 300) // 30s未成功则登录失败
clearInterval(t)
this.loading(that);//菊花图loading组件
//提示框方法
this.msg.showToast(that, "获取登录信息失败")
count++;
, 100)
,
....
//index.js
var app = getApp()
...
onLoad: function (options)
app.afterLogin(this, () =>
//这里放,你要在登录后做的事
)
,
...
这样能解决不?也是看别人的代码,就是用计时器setInterval每隔100毫秒执行一次,看看登录信息拿到没有,拿到了,在进行后续操作。
微信小程序-关于重定向问题
关于微信的重定向问题
wx.redirectTo(OBJECT)
参数
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
url | 串 | 是 | 需要跳转的应用内页面的路径 |
成功 | 功能 | 否 | 接口调用成功的回调函数 |
失败 | 功能 | 否 | 接口调用失败的回调函数 |
完成 | 功能 | 否 | 接口调用结束的回调函数(调用成功,失败都会执行) |
示例
wx.redirectTo({ url: ‘test?id=1‘ }) //url 如果不是跳当前路径 使用 ‘/xx/xx‘ 方式
以上是关于关于微信小程序执行顺序问题的主要内容,如果未能解决你的问题,请参考以下文章