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

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

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    微信小程序request异步赋值问题
    36
    0

    我把登陆/获取用户信息写再了app.js里,再success之后将内容赋值到globalData.xxxxx,Page的onLoad中再把globalData.xxxxx赋值到data.xxxxx发现赋值不上 差了很多资料说是onLoad,onLaunch,request异步请求的问题导致 请问如何解决。

    app.js

    app({
    
    globalData: {
        xxxxx: null
      },
    
    onLaunch: function () {
        var that = this;
        wx.login({
          success: function (res) {
            var code = res.code;
            if (code) {
              wx.getUserInfo({
                success: function (res) {
                  wx.request({
                    .....
                    },
                    success: function (data) {
                      that.globalData.xxxxx = data.data.xxxxx
                    },
                    fail: function () {
                      console.log('系统错误')
                    }
                  })
                },
                fail: function () {
                  console.log('获取用户信息失败,请重新授权')
                }
              })
            } else {
              console.log('获取用户登陆状态失败' + res.errMsg)
            }
          },
          fail: function () {
            console.log('登陆失败')
          }
        })
      }
    
    })

    index.js

    var app = getApp();
    
    Page({
        data: {
            xxxxx:null
          },
          
        onLoad: function (options) {
            this.setData({
              xxxxx: app.globalData.xxxxx
            });
        }
    
    })
    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 颠沛流离 普通会员 1楼

      在微信小程序中,request对象在异步操作中可以作为参数传递。但是,request对象的赋值在异步操作中可能不是最佳实践,因为请求的发起和返回是同步的,赋值操作则需要等待请求完成后再进行。

      为了解决这个问题,你可以使用Promise对象或者async/await语法来实现异步赋值。例如:

      javascript let request = await request(); let value = request.jsonValue;

      在这个例子中,request是异步操作的结果,await request()返回Promise,当Promise解析时,请求已完成。request.jsonValue就是请求返回的结果。

      如果你使用的是async/await,你可以这样做:

      ```javascript async function main() { let request = await request(); let value = await request.jsonValue; }

      main(); ```

      在这个例子中,main()函数返回一个Promise,当Promise解析时,请求已完成。request.jsonValue就是请求返回的结果。

      请注意,这些方法都有其适用的场景和限制,你可能需要根据你的具体需求来选择合适的方法。

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