测试几段代码,在异步环境获取 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的几个方法相关推荐

  1. VC++环境下获取当前输入法名称

    VC++环境下获取当前输入法名称 buffer=new char[255]; ::memset(buffer,0,255); thId=::GetWindowThreadProcessId(gFocu ...

  2. C++在linux环境下获取毫秒、微妙级别时间

                    C++在linux环境下获取毫秒.微妙级别时间 一.时间单位简介:     1秒  = 1000毫秒     1秒  = 1000000微秒     1秒  = 100 ...

  3. java反序列化漏洞POP查找_利用 Java 反序列化漏洞在受限环境下获取反向 Shell

    原标题:利用 Java 反序列化漏洞在受限环境下获取反向 Shell 原文链接: https://medium.com/abn-amro-red-team/java-deserialization-f ...

  4. mac php 连接mysql数据库_Mac环境下php操作mysql数据库的方法分享

    Mac环境下php操作mysql数据库的方法分享 今天在mac上搭建好了php的环境,我们就把php操作mysql数据库的方法分享给大家,有需要的小伙伴参考下. Mac本地环境搭建 在Mac系统,我们 ...

  5. mac php 连接mysql数据库_Mac环境下php操作mysql数据库的方法分享_PHP教程

    Mac环境下php操作mysql数据库的方法分享 今天在mac上搭建好了php的环境,我们就把php操作mysql数据库的方法分享给大家,有需要的小伙伴参考下. Mac本地环境搭建 在Mac系统,我们 ...

  6. 关于linux环境下访问Windows数据库的处理方法

    ** 关于linux环境下访问Windows数据库的处理方法 1 首先需要知道windows系统下的ip地址,打开cmd控制台,输入ipconfig这个命令,获取window的本地ip地址,方便lin ...

  7. 解决nodejs环境下端口号被占用的方法

    解决nodejs环境下端口号被占用的方法 参考文章: (1)解决nodejs环境下端口号被占用的方法 (2)https://www.cnblogs.com/guoliangstar/p/1014930 ...

  8. 一、在windows环境下修改pip镜像源的方法(以python3为例)

    在windows环境下修改pip镜像源的方法(以python3为例) 1.在windows文件管理器中,输入 %APPDATA% 2.会定位到一个新的目录下,在该目录下新建pip文件夹,然后到pip文 ...

  9. 在linux的环境下 连接深澜校园网的方法

    在linux的环境下 连接深澜校园网的方法 在学校必须用用校园网客户端联网,而又没有能力写linux下的客户端的,而且无线网卡驱动不支持的情况下,想了一些招式来连接深澜校园网,最后终于成功了 < ...

最新文章

  1. 翻译JScript中的面向对象系列文章
  2. 8、REVOKE:删除用户权限
  3. Master Data Service调用API创建Model
  4. 【老王来了】之隔壁路由器坏了,他来了...
  5. 18、数据的备份和还原
  6. git merging 怎么处理_如何让 Git 的输出对代码更友好?
  7. 【手把手教你树莓派3 (二)】 启动wifi模块
  8. 【产品对比】Word开发工具Aspose.Words和Spire.Doc性能和优劣对比一览
  9. TikTok玩法攻略总结,从输出内容再到变现,结尾送干货!
  10. ​七周二次课(5月7日)监控io性能、free命令、ps命令、查看网络状态、linux下抓包...
  11. 二、JAVA基础、语法
  12. 超硬核详解SpringClould之Gateway网管【含源码例子】
  13. 分享收集软件教程的微信小程序
  14. 电容或电感的电压_电容、电感是如何储能的?
  15. autogluon--自动机器学习快速训练模型
  16. 项目管理学习 ---- 理解项目管理思维框架
  17. 我是怎么和SAP结缘的 - Jerry的SAP校园招聘之路
  18. 启幕 Next ’21 大会 - Google Cloud 与您畅谈技术,论道云端
  19. R语言数据合并与连接技巧
  20. “用技术保护生命”乾元通多网聚合路由器助校车安全提升到5G环境

热门文章

  1. python连接linux后一步一步的操作_Python使用技巧
  2. 用Python画一颗心、小人发射爱心
  3. Windows下载FFmpeg最新版(踩了一上午的坑终于成功)
  4. Go一个协程实现加法demo
  5. android7.0 netd与netlink的framework,kernel通信流程
  6. android sepolicy报错解决
  7. Android Java调用ffmpeg命令
  8. android logo:内核、android开机动画
  9. h.264保存flv文件
  10. CSDN如何快速更换皮肤