解决微信小程序异步执行问题
虽然小程序中是首先加载的是app.js,然后在执行页面的onload函数。但是在实际操作的过程中(特别是多层函数嵌套)会出现页面函数先执行完成的现象。而有些时候,我们需要在app.js加载完成之后再执行页面中的函数。因此有了标题所述问题。
解决此类问题,自己查询资料发现Promise可以解决此类问题,好像微信小程序中api的promise也可以解决。有兴趣的读者可以去研究研究。API Promise化
下面讲一讲我用的方法。
app.js
//登录
login:function(){
var that = this;
return new Promise(function(resolve, reject){
wx.login({
success: res => {
// 发送 res.code 到后台换取 openId, sessionKey, unionId
console.log(res.code)
//发送请求
wx.request({
url: that.globalData.severUrl, //接口地址
data: {code:res.code},
method:'GET',
header: {
'content-type': 'application/json' //默认值
},
success: function (res) {
resolve('success')
//后面的操作
},
fail:function (res) {
reject('error')
}
})
}
})
})
}
index.js
app.login().then(function(resolve, reject){
//resolve, reject可以用来判断,然后执行接下来的操作
})
这里需要注意的是:function(resolve, reject)必须对应上,即创建对象以及使用的时候要对应。
当然这里的写法多样,这只是其中一种。但个人感觉这种写法比较简洁。
欢迎大家讨论交流,批评指正!
本文探讨了微信小程序中遇到的异步执行问题,特别是在多层函数嵌套时,页面函数可能先于app.js加载完成而执行。通过使用Promise,文章详细介绍了如何确保页面函数在app.js加载完成后执行,提供了具体的代码示例。
1099

被折叠的 条评论
为什么被折叠?



