小程序
小游戏
企业微信
微信支付
扫描小程序码分享
我想要在app.js页面直接获取用户的open_id,这样就不用每个页面获取一次。问题是一直不能存进去。萌新,同学说是异步问题 我试了好多遍也没得存进去。
结果是没变。。
7 个回答
加粗
标红
插入代码
插入链接
插入图片
上传视频
最好不要放在global里,这样每次onLaunch都要后台(或者云函数)取一次openid,openid这个值最好放在storage里,因为openid是永久不变的,取一次就行了。
我的代码是这样的:
this.openid = wx.getStorageSync('openid') || await app.getOpenid()
app.js里是这样的:
getOpenid: async function(){
let res = await wx.cloud.callFunction({ name: 'login' })
wx.setStorageSync('openid', res.result.openid)
return res.result.openid
},
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。
那我之后要在别的页面使用 是不是就是 var open=getApp().getOpenid()就可以了?
你这样调用,不还是要重新取一次openid吗?
任何页面这样调用:
const app = getApp()
先取storage,如果没有的话,调用app.getOpenid
谢谢了!
老铁你的小程序是从哪个开源项目开发的呐
app.js里面怎么可能直接调微信获取openid接口?这个接口应该通过后台调吧,或者走云开发
可以调的。。掉成功了。我走云开发的,vue
不是它的异步难懂,app.js这个文件很多时候就是个弟弟。
唉 遭重
异步的问题。。你在其他页面引用的时候打印应该就好了。。。。
其他页面用不了
把data里面的openid赋值给删了。,,然后你在onshow里面打印 console.log(app.globalData.openid)试试
应该是时间差的问题。重新在onLoad下setdata就有了 谢谢了
下面执行的比上面早鸭,,
在then里面数据存进去了 我重新在别的页面调用 显示 还是1
别的页面是tab页面吧,tab页和app.js也是异步的,在执行的时候可能你这个方法还没执行,按照你这种写法你需要再写个promise确保在使用的时候你存的操作已经执行了
不是tab 就普通的页面。打算做一个创建团队/加入团队,要用到openid 所以在想能不能用全局 直接过来。这个是毕设,之前也没学过,也是这几天自己琢磨的。代码可能会比较傻,但还是有功能。就是微信小程序这个异步真的是有点难懂。这里直接通过openid 在云开发数据库找到 显示。现在就是想便捷的获取到用户的openid
已经有了。谢谢谢
onLaunch里的log打印早了,应该放到then回调里面。
then里面是有的 出去就没了
52行有打印出来就说明已经设置上了,你在其他什么地方用到了?
我猜是时间差问题,onLoad里换成 console.log(app.globalData.openid)
有了有了 我在onload下面 重新setdata一下
关注后,可在微信内接收相应的重要提醒。
请使用微信扫描二维码关注 “微信开放社区” 公众号
最好不要放在global里,这样每次onLaunch都要后台(或者云函数)取一次openid,openid这个值最好放在storage里,因为openid是永久不变的,取一次就行了。
我的代码是这样的:
this.openid = wx.getStorageSync('openid') || await app.getOpenid()
app.js里是这样的:
getOpenid: async function(){
let res = await wx.cloud.callFunction({ name: 'login' })
wx.setStorageSync('openid', res.result.openid)
return res.result.openid
},
那我之后要在别的页面使用 是不是就是 var open=getApp().getOpenid()就可以了?
你这样调用,不还是要重新取一次openid吗?
任何页面这样调用:
const app = getApp()
this.openid = wx.getStorageSync('openid') || await app.getOpenid()
先取storage,如果没有的话,调用app.getOpenid
谢谢了!
老铁你的小程序是从哪个开源项目开发的呐
app.js里面怎么可能直接调微信获取openid接口?这个接口应该通过后台调吧,或者走云开发
可以调的。。掉成功了。我走云开发的,vue
不是它的异步难懂,app.js这个文件很多时候就是个弟弟。
唉 遭重
异步的问题。。你在其他页面引用的时候打印应该就好了。。。。
其他页面用不了
把data里面的openid赋值给删了。,,然后你在onshow里面打印 console.log(app.globalData.openid)试试
应该是时间差的问题。
重新在onLoad下setdata就有了 谢谢了
下面执行的比上面早鸭,,
在then里面数据存进去了 我重新在别的页面调用 显示 还是1
别的页面是tab页面吧,tab页和app.js也是异步的,在执行的时候可能你这个方法还没执行,按照你这种写法你需要再写个promise确保在使用的时候你存的操作已经执行了
不是tab 就普通的页面。打算做一个创建团队/加入团队,要用到openid 所以在想能不能用全局 直接过来。这个是毕设,之前也没学过,也是这几天自己琢磨的。代码可能会比较傻,但还是有功能。就是微信小程序这个异步真的是有点难懂。
这里直接通过openid 在云开发数据库找到 显示。现在就是想便捷的获取到用户的openid
已经有了。谢谢谢
onLaunch里的log打印早了,应该放到then回调里面。
then里面是有的 出去就没了
52行有打印出来就说明已经设置上了,你在其他什么地方用到了?
其他页面用不了
我猜是时间差问题,onLoad里换成 console.log(app.globalData.openid)
有了有了 我在onload下面 重新setdata一下