收藏
回答

变量赋值问题

问题模块 框架类型 问题类型 操作系统 工具版本
开发者工具 小程序 Bug Windows 1.02.1902010

onLoad: function (options) {

// 获取openID

var oi='';

var that = this;

var user = wx.getStorageSync('user') || {};

var userInfo = wx.getStorageSync('userInfo') || {};

if ((!user.openid || (user.expires_in || Date.now()) < (Date.now() + 600)) && (!userInfo.nickName)) {

wx.login({

success: function(res) {

if (res.code) {

wx.getUserInfo({

success: function(res) {

var objz = {};

objz.avatarUrl = res.userInfo.avatarUrl;

objz.nickName = res.userInfo.nickName;

//console.log(objz);

wx.setStorageSync('userInfo', objz); //存储userInfo

}

});

var d = that.globalData; //这里存储了appid、secret、token串

console.log("appid" + d.appid);

console.log("token" + res.code);

var l = 'https://api.weixin.qq.com/sns/jscode2session?appid=' + d.appid + '&secret=' + d.secret + '&js_code=' + res.code + '&grant_type=authorization_code';

wx.request({

url: l,

data: {},

method: 'GET', // OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT  

// header: {}, // 设置请求的 header  

success: function(res) {

var obj = {};

obj.openid = res.data.openid;

obj.expires_in = Date.now() + res.data.expires_in;

oi = obj.openid;

console.log("OPENID" + oi);

}

});

} else {

console.log('获取用户登录态失败!' + res.errMsg)

}

}

});

}

console.log("OPENID" + oi);

},

请问为什么最后一个oi变量输出为空,明明在前面oi = obj.openid给oi赋值了啊

最后一次编辑于  02-19  (未经腾讯允许,不得转载)
回答关注问题邀请回答
收藏

4 个回答

  • 墨染的天空
    墨染的天空
    02-20

    wx.request又不是同步的,最后一个oi肯定没值啊

    02-20
    赞同 1
    回复 1
    • .
      .
      02-20

      懂了,最后一个oi还没有赋值就先执行了!

      02-20
      回复
  • 还好
    还好
    02-19

    异步问题

    02-19
    赞同 1
    回复
  • 卢霄霄
    卢霄霄
    02-19

    js 异步 百度下吧,js基础知识

    02-19
    赞同 1
    回复
  • 管凯旋
    管凯旋
    02-19

    jscode2session这个接口不能在前端调用的啊,这个接口本身就报错了,肯定是没值啊

    02-19
    赞同
    回复 1
    • .
      .
      02-19

      返回了一个openID的值啊?

      02-19
      回复