如果要使用微信提供的JS-SDK,其中一步是使用wx.config来注入配置信息来进行权限验证。
但是wx.config是一个客户端的异步操作,如果需要在页面加载时就调用相关接口,就必须确保wx.config权限验证完毕后再调用接口。
微信提供了wx.ready函数,虽然文档上说wx.ready是验证成功时执行的函数,但权限验证成功或失败都会调用。也就是说如果权限验证通过,只会调用wx.ready函数,如果权限验证失败,先调用wx.error函数,然后再调用wx.ready。
所以在wx.ready里调用接口也不保险,我们需要在真正验证时才调用接口。可以封装了一个Promise函数来解决这个问题:
function checkIsReady() {
return new Promise((resolve, reject) => {
wx.ready(() => resolve())
wx.error(err => reject(err))
})
}
checkIsReady().then(() => {
//这里调用接口
}).catch(err => {
//这里处理错误
})
另外如果是用户一些操作触发时才调用的JS SDK接口,则可以直接调用,不需要放在ready函数中。