账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    小程序 Promise执行问题
    57
    0
    App({
      onLaunch: function () {
        var logs = wx.getStorageSync('logs') || []
        logs.unshift(Date.now())
        wx.setStorageSync('logs', logs)
        var that = this
        this.getOpenid().then(()=>{
            return that.setAdmin()
            //为什么这里没有任何console啊,没有执行
        })
      },
      getOpenid: function () {
          var that = this
          return new Promise(function (resolve, reject) {
              console.log(resolve)
              wx.getStorage({
                  key: 'openid',
                  success: function (res) {
                     that.globalData.openId = res.data
                     console.log(that.globalData.openId)
                  },
                  fail: function () {
                      wx.login({
                          success: res => {
                              var code = res.code; //返回code
                              var appId = '';
                              var secret = '';
                              wx.request({
                                  url: 'https://api.weixin.qq.com/sns/jscode2session?appid=' + appId + '&secret=' + secret + '&js_code=' + code + '&grant_type=authorization_code',
                                  data: {},
                                  header: {
                                      'content-type': 'json'
                                  },
                                  success: function (res) {
                                      wx.setStorage({
                                          key: "openid",
                                          data: res.data.openid
                                      })
                                      that.globalData.openId = res.data.openid
                                  }
                              })
                          }
                      })
                  }
              })
          })
      },
      setAdmin:function () {
          var that = this
          return new Promise(function (resolve, reject) {
              console.log(that.globalData.openId)
              wx.request({
                  url: 'http://127.0.0.1:8889/api/club/adminComfirm',
                  method:'post',
                  data:{
                      name:that.globalData.openId
                  },
                  header:{
                      "content-type":'application/json'
                  },
                  success:function(res){
                      console.log(that.globalData.openId)
                  }
              })
          })
      },
      globalData: {
        userInfo: null,
        openId:null,
        adminOn:true
      }
    })

    目的是要先 设置openid到data后,再传给服务器验证,但是wxrequst异步要promise来规定执行顺序啊,但是这里为什么then后不执行呢,求大大解答

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 饿狼传说〆 普通会员 1楼

      在使用Promise执行过程中,可能会出现各种问题,比如Promise自身出错、依赖于其他Promise错误、依赖于异步操作错误等。以下是一些常见问题的解决方法:

      1. Promise自身出错:在使用Promise时,如果自身出现错误,会导致整个Promise的执行失败。这可以通过在Promise中添加错误处理代码来解决。

      2. 依赖于其他Promise错误:如果Promise依赖于其他Promise,当这个Promise出现错误时,其他Promise可能会被阻塞或者失败。这时,需要确保其他Promise的依赖关系是正确的,或者添加错误处理代码来处理这个问题。

      3. 依赖于异步操作错误:如果Promise依赖于异步操作,如果这个异步操作出现错误,Promise的执行也会失败。这时,需要确保异步操作的依赖关系是正确的,或者添加错误处理代码来处理这个问题。

      4. Promise链中的错误:如果Promise链中的所有Promise都出现错误,Promise链也会失败。这时,需要确保每个Promise链的依赖关系是正确的,或者添加错误处理代码来处理这个问题。

      5. Promise的catch方法:Promise的catch方法用于捕获Promise执行时出现的错误。如果错误发生,catch方法可以返回错误信息,也可以执行特定的代码。

      解决这些问题的方法可能包括修改Promise的语法,添加错误处理代码,确保异步操作的依赖关系,使用Promise链的catch方法等。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部