收藏
回答

wx.getSetting封装return undefined?

想把wx.getSetting封装起来,方便后面调用,但是貌似不行呀

function isAuthSetting() {
  wx.getSetting({
      success: res=>{
          if(res.authSetting['scope.userInfo']) {
              return true
          }else{
              return false
          }
      },
      fail: res=>{
          return false
      }
  })
}

// console.log(this.isAuthSetting()) 返回undefined,这是为什么?
// 也不能用if(this.isAuthSetting())
// 有解决办法吗

回答关注问题邀请回答
收藏

2 个回答

  • 静静
    静静
    06-30
    isAuthSetting(){
        return new Promise((resolve, reject) => {
            wx.getSetting({
                success: res=>{
                    if(res.authSetting['scope.userInfo']) {
                        resolve(true);
                    }else{
                        reject(false);
                    }
                },
                fail: res=>{
                    reject(false);
                }
            })
        })
    }
    
    isAuthSetting().then((res) =>{
      console.log('已授权');
    }).catch((err) =>{
      console.log('未授权');
    })
    
    06-30
    有用 3
    回复 4
    • z.song
      z.song
      06-30
      哇多谢!
      06-30
      回复
    • 静静
      静静
      06-30
      随便写了下 可以把要判断的授权直接写成入参,就能动态获取了
      06-30
      回复
    • 静静
      静静
      06-30回复静静
      要灵活使用Promise 你会发现微信小程序很多地方用的上
      06-30
      回复
    • z.song
      z.song
      06-30
      多谢 试了下 成功了
      06-30
      1
      回复
  • o0o有脾气的酸奶
    o0o有脾气的酸奶
    06-30
    async isAuthSetting(scope, withSubscriptions = false){
        var scope = scope ? 'scope.'+scope.replace(/^scope\./, '') : '',
        { authSetting = false } = await wx.getSetting({ withSubscriptions })
        return scope != '' && authSetting && authSetting[scope] ? !0 : !1
    }
    // 写userInfo 或 scope.userInfo 都可以
    isAuthSetting('userInfo').then(res =>{
      console.log(res ? 'userInfo 已授权' : 'userInfo 未授权');
    }).catch(e =>{
      console.log('获取用户的当前设置出错', e);
    })
    
    

    若认为该回答有用,给回答者点个[ 有用 ],让答案帮助更多的人

    06-30
    有用
    回复
登录 后发表内容
问题标签