VPS参考测评推荐
专注分享VPS主机优惠信息
衡天云优惠活动
荫云优惠活动
新天域互联优惠活动
wexlayer优惠活动

使用异步/异步/等待微信开发(小程序异步/等待支持)

主机参考: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(//处理错误}

外观,每个异步呼叫的失败回调失败需要定义。处理所有可能的错误,但这也不是异步/等待的优势!

推荐教程一个移动通信软件支持通过移动网络发送语音短信,视频,照片和文本。沟通经验

这几篇文章你可能也喜欢:

本文由主机参考刊发,转载请注明:使用异步/异步/等待微信开发(小程序异步/等待支持) https://zhujicankao.com/143017.html

【腾讯云】领8888元采购礼包,抢爆款云服务器 每月 9元起,个人开发者加享折上折!
打赏
转载请注明原文链接:主机参考 » 使用异步/异步/等待微信开发(小程序异步/等待支持)
主机参考仅做资料收集,不对商家任何信息及交易做信用担保,购买前请注意风险,有交易纠纷请自行解决!请查阅:特别声明

评论 抢沙发

评论前必须登录!