对于微信小程序中系统提供的大致都是异步方法,所以这样就会使页面加载出现了,有的数据还没有请求到。对于这样的情况使用ES6中提供Promise很好的解决了这个问题,微信小程序支持ES6,不了解Promise的可以找个教程看一下。
- 我们可以在app.js直接使用,也可以创建一个新的文件把它封装成一个方法,我这里就做一个直接使用的例子:
- 在app.js中创建一个方法
getOpenId: function () {
let promise = new Promise(function (resolve, reject) {
let self = this;
wx.login({
success: res => {
wx.request({
url: '你的链接地址',
method: 'POST',
data: {'传递的参数':'xxx'},
header: {
'Content-Type': 'application/x-www-form-urlencodeds',
'cache-control': 'no-cache'
},
success: function (res) {
resolve(res);
},
fail: function (res) {
reject(res);
}
})
}
})
})
return promise;
}
2.在想要得到请求回来数据的界面中
const app = getApp();
onLoad: function (options){
app.getOpenId().then(res => {
if ('输入自己的判断条件') {
} else {
}
}).catch(e => {
// 打印一下错误
console.log(JSON.stringify(e) + "+++++++")
})
}