主机参考:VPS测评参考推荐/专注分享VPS服务器优惠信息!若您是商家可以在本站进行投稿,查看详情!此外我们还提供软文收录、PayPal代付、广告赞助等服务,查看详情! |
我们发布的部分优惠活动文章可能存在时效性,购买时建议在本站搜索商家名称可查看相关文章充分了解该商家!若非中文页面可使用Edge浏览器同步翻译!PayPal代付/收录合作 |
有许多称为异步的接口,例如wx.login(),wx.request(),wx.getuserinfo(),等等。 如果不同的话,suckess(),fail()和complete()被称为异步。
但是,以回调方式编写程序确实很痛苦。 如果您有一个需要按顺序完成这些事情的过程:
wx.getStorage()获取缓存的数据并检查登录状态
wx.getSetting()fet配置信息<<
使用wx.login()配置信息登录
wx.getuserinfo()登录以获取用户。 )向业务服务器启动数据请求
,代码可能看起来像
wx.getStorage({fail:()=> {wx .getSetting({{success:stucke:settings =>>) >>> {wx.login({Success:({Code})=> {但是,默认情况下,微信开发人员工具不支持异步/期待期待。 如何启用它?
1。 异步/异步/等待
如果您有兴趣,请在官方微信中的Mini Program文档中搜索异步。 您可以找到工具⇒开发助手⇒代码编译页面。 它在工具⇒开发助手⇒代码汇编页面上列出。 对等待的支持是从“添加编译”部分中的表格中的摘录:
1.02.1904282及更高版本的开发工具版本添加了增强编译以增强ES6功能的选项。 ES5将ES5至ES5至ES5加强。 ,当启用时,它使用新的汇编逻辑,并为开发人员提供可用的其他选项。 支持异步/等待语法,必要时注入RegeneratorRuntime,目录位置与助手函数相同。 简而言之,只要“微信开发人员工具”已更新为v1.02.1904282或更高版本,则无需运行NPM安装恢复剂。 对于事物,要使用异步/Watiet功能,您只需要更改一个配置项目即可。 该配置可在工具栏上可用⇒详细信息⇒本地设置页面。
要快速验证async/等待是否可用,请在app.js中添加代码:
(async()= = = = = = = = = = = = = = = = = = = = = = = = = = > {const p =等待新的承诺(reso)lve => {setimeout(()=>“ hello async/negait”),1000);输出将显示在接口的“控制台”选项卡中。 't工作,首先检查“微信开发人员工具”的版本 - 至少您无法下载最新版本。 有一个问题。
2。 支持wx.abcd
异步/等待的异步方式,但是仍然需要以诺言风格封装wx.abcd()。
node.js在UTIL模块中提供了尊贵,以将Node.js风格的回调转换为Prome Styles,但显然它不起作用WX样式。 最好自己动手做,也无需过度思考。 例如,WX风格的异步调用在跨表单之间是一致的。 它们的特征如下:
使用对象传递包含三个主要回调的所有参数
成功:( res)=>回调如果异步方法成功
fail :( err) =>回调如果异步方法失败
完成:()=>当异步方法完成时(无论成功或失败如何)
因此要承诺风格并通过异步/等待来写下,它应该具有此外观
try {const res = wx.abcd();带回调}/当然,用完整的回调做某事,当然是捕获量的两个部分,最终不是必需的。 这意味着您不需要使用try语句块。 但是,如果您不使用渔获物,就会有一个魔术坑。 此问题将在稍后讨论。 现在要做的第一件事是进行更改。
2.1。 定义Promisify()
Promisify()是一个封装函数,将原始WX.ABCD作为参与者传递,并返回具有新的Promise样式的函数。 这是代码和描述:
函数Promisify(fn){//返回ProMisify()函数。 。 失败:err => recult(err)//
以下是使用它的示例:
const asynclogin = prominceify(wx.login); //请注意将其写成wx.login()请。 为什么,我尝试{const res = asynclogin(); const code = res .code; // code} catch(err){//登录错误}最后p>但是,老实说,写异步方法非常麻烦,一次使用一种方法。 建议编写工具功能以一次转换使用的方法。 但是,在检查后,有无数方法可以在WX下定义。 转动所使用的任何东西仍然是二手,但是您可以分批将其转动,并且传输的结果仍然封装在对象中。 整个过程都是迭代的,最后,每个过程的结果集中在一起。t; type t.member ===“函数”)。降低((r,t)=> {r [t.name] = Promise(wx [t.name]); return r;},{}); }
这个toasync的用法几乎与
const awx = toasync([“登录”,“请求”]);一个参数
const awx = toasync(“登录”,“请求”); ..名称很好,即
函数toasync(...名称){...}
尚未完成。 所有JS文件。 因此,注入此
app({onLaunch:function(){// wx.async = toasync;�。}});
3,将其注入app.onlaunch()的WX对象。马苏。 期待已久的魔术坑
该工具已经准备就绪,并且代码已大大转换。 它看起来更舒适,但是在运行时报告了错误! 为什么? ? ?
让我们首先查看原始代码,它是类似的
wx.getstorage({key:“ blabla”,成功:res =&gt{//使用res}} //
停止AWX的示例。
为什么现在没有报告过什么?
由于没有定义故障回调,因此忽略了错误。 但是,由于Promise(Promise()将失败回调封装为reculd(),因此必须通过catch()处理Awx.getStorage()返回的承诺对象。 尽管我们不直接使用承诺对象,但我们使用等待语法,因此recupl()以引发异常的形式反映。
在人类术语中,必须将代码更改为: “ blabla”}); //
您难过吗? 如果您并不难过,请考虑一下,应该使用尝试的代码块...捕获...捕获...所有电话。 你不能做任何伤心吗?
3.1。 忽略不需要处理的错误
清洁错误是一个非常好的习惯,但并非所有错误情况都需要处理。 实际上,很容易忽略错误。 在对诺言形式的异步调整后,只需添加
const = awx awx .getStorage({key:“ blabla”})。catch(()=> {});在这里不要做任何事情。 } awx.getSetting();=等待awx.login()。 const userInfo = awx.getUserInfo({code});} catch(err){//处理错误}catch(//处理错误}
外观,每个异步呼叫的失败回调失败需要定义。处理所有可能的错误,但这也不是异步/等待的优势!
推荐教程一个移动通信软件支持通过移动网络发送语音短信,视频,照片和文本。沟通经验
这几篇文章你可能也喜欢:
- 微信系的图像处理(中心和全屏)(微信小程序设置图像位置和大小)
- 介绍微信小程序中的wxs模块并展示如何使用(微信小程序中如何使用该模块,代码解释)
- 快速为你的微信小程序实现一个按钮组件(你的小程序中的按钮有哪些类型?)
- 微信小程序页面开发(微信小程序开发教程手册)
- 微信小程序购物车功能的实现(微信小程序开发购物车支付)
本文由主机参考刊发,转载请注明:使用异步/异步/等待微信开发(小程序异步/等待支持) https://zhujicankao.com/143017.html
评论前必须登录!
注册