猿问

关于微信小程序中异步登录的问题? 文件执行顺序的问题 与promise问题

目前我将登录操作写在了app.js中,获取到微信的code后,向自己的服务器获取验证access-token.代码如下
app.js
onLaunch:function(){
wx.login({
success:res=>{
//发送res.code到后台换取openId,sessionKey,unionId
config.code=res.code;
this.initUserInfo();
}
})
},
//初始化用户信息
initUserInfo:function(){
wx.request({
url:config.baseUrl+"/index.php?m=Api&c=User&a=initUserInfo",
method:'POST',
header:{
"Content-Type":"application/x-www-form-urlencoded"
},
data:{
source_type:'wxapp',
code:config.code,
},
success:function(res){
if(res.data.status==true){
config.uid=res.data.data.uid;
config.accessToken=res.data.data.wxapp_access_token;
}elseif(res.data.status==false){
console.log(res.data.data);
}else{
}
}
})
},
在另一个文件met.js中需要通过获取的uidaccessToken来请求获取数据.代码如下met.js
eggGetRemoteWords:function(){
varself=this;
wx.request({
url:app.config.baseUrl+"/index.php?m=Api&c=Learning&a=getLearningWord",
method:'POST',
header:{
"Content-Type":"application/x-www-form-urlencoded"
},
data:{
uid:app.config.uid,
access_token:app.config.accessToken
},
success:function(res){
if(res.data.status==true){
self.setData({
'word.wordArray':res.data.data,
})
vartotal=self.data.word.wordArray.length;
self.setData({"word.wordInfo.total":total});
}elseif(res.data.status==false){
}else{
}
}
})
},
但是目前总是met.js中的函数eggGetRemoteWords总早于app.js中initUserInfo登录函数执行,导致无法获取到数据因为js异步的原因.请问大家这应该怎么处理呢?我了解到promise请问如果目前的需求将如何实现呢?
Helenr
浏览 591回答 2
2回答
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答