请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

关于openid获取时长

谢老师过年好!
我希望用户进入程序,在首页中就能根据他的openid显示他账户在数据库中的相关信息。
但是发现,在app. js的onLaunch中调用云函数获取openid需要时间(从500到最多5000毫秒不等,平均1000毫秒左右),在首页的onLoad中使用openid时,很多时候拿不到结果。或者说,app. js的onLaunch还没有把从云函数返回的openid赋值给全局变量,那边首页的onLoad就已经执行完了。
我试了试增加一个页面,让用户点一下,相当于延时,基本上就够收到openid了,但是这样用户体验不好。
请问老师,这个问题一般怎么处理呢?

正在回答

2回答

使用promise,获取openId的函数return new Promise() ,在调用的地方的then中就能取到返回值了。

0 回复 有任何疑惑可以回复我~
  • 提问者 慕UI5549312 #1
    首先谢谢您的快速回复!特别抱歉我的基础比较差,没明白。
    您的意思是在获取openid的云函数Login里return new promise,然后在app. js里调用云函数时就会得到结果,对吗?我一直能得到openid,只是慢。在页面使用openid时,是读取得全局变量。
    
    另外,如果我把openid存入本地存储,进入小程序时先读本地,这样快。这样只有新用户或者当用户使用新设备时,才读不到,这时才会要等的时间较长。这样会有账户安全问题吗?
    回复 有任何疑惑可以回复我~ 2021-02-19 10:52:36
  • 提问者 慕UI5549312 #2
    我先认真学习一下异步操作和promise的使用:)
    回复 有任何疑惑可以回复我~ 2021-02-19 11:00:05
谢成 2021-02-19 15:26:20

不是在云函数中使用promise。

是在app.js中,调用云函数的时候,外面包一层promise。


学习promise可以看下我另一门语法课程对应的电子书:http://es.xiecheng.live/es6/promise.html


0 回复 有任何疑惑可以回复我~
  • 提问者 慕UI5549312 #1
    做了些练习,终于对promise和异步执行的顺序问题有一点初步的了解了。
    中间耽误时间的,最终发现都是JS以及编程的基础太差哈哈。
    谢谢老师了!
    回复 有任何疑惑可以回复我~ 2021-02-21 13:14:05
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信