applet app.js上的onLaunch和index.js上的onload异步运行问题,同时触发时如何等待返回值以响应索引上的onload内容
例如,如果获取用户的openid或证书,则在未返回所需数据之前将执行index.js的onload,后续代码不支持OpenID *
ES6提供了promise解决方案,但这是一个很好的解决方案
promise下载位置
直接复制压缩的源代码,在applet中创建promise.js文件,直接粘贴,然后在app.js中浏览
const promise=require (utils/promise.js );
APP.js的代码
取出你写在onLaunch上的代码片段,重写新方法
login:function () {
let that=this;
返回新promise (功能(resolve,reject ) {
//登录
wx.login({
success: res={
将res.code发送到后台以换取openId、sessionKey和unionId
if(RES.code ) {
//console.log ('获取用户登录证书: ' code );
-------发送证书-------
/*
通过代码获取登录会话
*/
wx.request({ (
url: 'xxx/login? 代码=' RES.code,
方法: ' get ',
header: {
' content-type ' : ' APP/JSON '
(,
success :功能(RES ) {
console.log(res )
if(RES.Statuscode==200 ) {
//注意这里
求解(RES;
} else {
控制台. log (RES.errmsg ) )。
}
(,
() )
} else {
console.log ('获取用户登录失败。' res.errMsg );
}
}
() )
() )
}
index.js代码
onload :功能(选项) {
App.login(.then ) ) RES={
console.log(res )
() )
(,