微信公众号封装wx.ready和wx.error为Promise函数确保接口正确执行

如果要使用微信提供的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函数中。

你可能感兴趣的:(微信公众号封装wx.ready和wx.error为Promise函数确保接口正确执行)