这里使用了Promise解决方案,Pomise ES6中的一个对象,从它可以获取异步操作的消息。
解决了当index.js需要使用openid时,openid还未得到这个问题。
app.js
1、定义一个获取Openid的方法,此方法返回一个promise对象。
2、在onLaunch函数中调用此方法,并将其赋值给一个全局变量,供后续页面调用
onLaunch: function () {
//初始化的时候调用getOpenid
this.Promise = this.getOpenid()
},
Promise:null,
getOpenid:function(){
var promise = new Promise(function (resolve, reject) {
// ... some code
setTimeout(function () {
resolve('1234567890');
}, 5000);
});
return promise;
}
})```
## index.js
1、在onLoad函数中通过调用promise对象的then方法以获取回调函数返回的数据value
var app = getApp()
Page({
onLoad: function () {
var that = this
//使用Promise
app.Promise.then(function (value) {
// success
console.log('获取openid成功:'+value)
that.setData({
openid:value
})
}, function (error) {
// failure
});
}
})```
网友评论