ajax获取openid,异步环境下获取 openid的几个方法
测试几段代码,在异步环境获取 openid ,以交流探讨。
1. 小程序启动时获取
在 Page 的 onLoad 阶段调用以下函数。该函数通过调用云函数获取openid。当拿到后即设置一个变量 dataReady。该变量用来控制 wxml 页面显示,当为真时即完整显示页面。这里假定:页面完整显示后再使用openid。// index.js
Page({
data: {
openid : "",
dataReady: false,
},
onLoad: function(){
getopenid(this)
//...
},
})
function getopenid(that){
wx.cloud.callFunction({
name: getopenid,
success: res=>{
that.setData({openid: res.openid, dataReady: true})
}
})
}
// index.xmls
//
//
//
//
//
//
在 函数getopenid中,除了采用回调函数方式,亦可用 Promise 对象(ES6),或 async/await型函数(ES8)等方式。
2. 在其他场合获取
这时要确保使用openid的代码应出现在获取操作完成后。比如使用回调函数方式:function getopenid(){
wx.cloud.callFunction({
name: getopenid,
success: res=>{
//在这里使用openid
}
})
}
如果使用 ES6 中的 Promise 对象,就要出现在then语句块里:var p1 = new Promise(function (resolve, reject){
wx.cloud.callFunction({
name: "getopenid",
data: {para1: "", para2: ""},
success: res=>{resolve(res)},
})
p1.then(res => {
// 在这里使用 openid
}, function(res){}
)
如果使用 ES8 中的async 型函数 ,则应该出现在 await 指令之后。async getopenid function(){
lcid = await wx.cloud.callFunction()
//在这里使用openid
}
以下列出异步环境下的代码执行顺序:其中:*step i 表示由系统发起。先前各步迅速执行完后,控制权即交给系统。等到悬挂任务(PendingJob)完成后再由系统发起执行后续代码。
1. 回调函数方式// step 1
func1()
// step 4
function func1(){
// step 2
var lca = wx.cloud.callFunction({success: res=>{
// *step 5
}
})
// step 3
}
2. Promise 对象// step 1
var p1 = new Promise(function(resolve, reject){
wx.cloud.callFunction({
success: res=>{
// *step 4
resolve(res)
}
})
})
// step 2
p1.then({
// *step 5
}, {
}
)
// step 3
3. async/await 型函数// step 1
func1()
// step 3
async function func1(){
// step 2
var lca = await wx.clooud.callFunction()
// *step 4
}
欢迎批评指正。[END]
ajax获取openid,异步环境下获取 openid的几个方法相关推荐
- VC++环境下获取当前输入法名称
VC++环境下获取当前输入法名称 buffer=new char[255]; ::memset(buffer,0,255); thId=::GetWindowThreadProcessId(gFocu ...
- C++在linux环境下获取毫秒、微妙级别时间
C++在linux环境下获取毫秒.微妙级别时间 一.时间单位简介: 1秒 = 1000毫秒 1秒 = 1000000微秒 1秒 = 100 ...
- java反序列化漏洞POP查找_利用 Java 反序列化漏洞在受限环境下获取反向 Shell
原标题:利用 Java 反序列化漏洞在受限环境下获取反向 Shell 原文链接: https://medium.com/abn-amro-red-team/java-deserialization-f ...
- mac php 连接mysql数据库_Mac环境下php操作mysql数据库的方法分享
Mac环境下php操作mysql数据库的方法分享 今天在mac上搭建好了php的环境,我们就把php操作mysql数据库的方法分享给大家,有需要的小伙伴参考下. Mac本地环境搭建 在Mac系统,我们 ...
- mac php 连接mysql数据库_Mac环境下php操作mysql数据库的方法分享_PHP教程
Mac环境下php操作mysql数据库的方法分享 今天在mac上搭建好了php的环境,我们就把php操作mysql数据库的方法分享给大家,有需要的小伙伴参考下. Mac本地环境搭建 在Mac系统,我们 ...
- 关于linux环境下访问Windows数据库的处理方法
** 关于linux环境下访问Windows数据库的处理方法 1 首先需要知道windows系统下的ip地址,打开cmd控制台,输入ipconfig这个命令,获取window的本地ip地址,方便lin ...
- 解决nodejs环境下端口号被占用的方法
解决nodejs环境下端口号被占用的方法 参考文章: (1)解决nodejs环境下端口号被占用的方法 (2)https://www.cnblogs.com/guoliangstar/p/1014930 ...
- 一、在windows环境下修改pip镜像源的方法(以python3为例)
在windows环境下修改pip镜像源的方法(以python3为例) 1.在windows文件管理器中,输入 %APPDATA% 2.会定位到一个新的目录下,在该目录下新建pip文件夹,然后到pip文 ...
- 在linux的环境下 连接深澜校园网的方法
在linux的环境下 连接深澜校园网的方法 在学校必须用用校园网客户端联网,而又没有能力写linux下的客户端的,而且无线网卡驱动不支持的情况下,想了一些招式来连接深澜校园网,最后终于成功了 < ...
最新文章
- 翻译JScript中的面向对象系列文章
- 8、REVOKE:删除用户权限
- Master Data Service调用API创建Model
- 【老王来了】之隔壁路由器坏了,他来了...
- 18、数据的备份和还原
- git merging 怎么处理_如何让 Git 的输出对代码更友好?
- 【手把手教你树莓派3 (二)】 启动wifi模块
- 【产品对比】Word开发工具Aspose.Words和Spire.Doc性能和优劣对比一览
- TikTok玩法攻略总结,从输出内容再到变现,结尾送干货!
- ​七周二次课(5月7日)监控io性能、free命令、ps命令、查看网络状态、linux下抓包...
- 二、JAVA基础、语法
- 超硬核详解SpringClould之Gateway网管【含源码例子】
- 分享收集软件教程的微信小程序
- 电容或电感的电压_电容、电感是如何储能的?
- autogluon--自动机器学习快速训练模型
- 项目管理学习 ---- 理解项目管理思维框架
- 我是怎么和SAP结缘的 - Jerry的SAP校园招聘之路
- 启幕 Next ’21 大会 - Google Cloud 与您畅谈技术,论道云端
- R语言数据合并与连接技巧
- “用技术保护生命”乾元通多网聚合路由器助校车安全提升到5G环境