如何在微信小程序中使用Promise
发表于:2023-02-02 作者:安全数据网编辑
编辑最后更新 2023年02月02日,这篇文章给大家介绍如何在微信小程序中使用Promise,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。Promise 是异步编程的一种解决方案,比传统的解决方案--回调函数和事件-
这篇文章给大家介绍如何在微信小程序中使用Promise,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
Promise 是异步编程的一种解决方案,比传统的解决方案--回调函数和事件--更合理和更强大。它由社区最早提出和实现,ES6 将其写进了语言标准,统一了用法,原生提供了Promise对象。
所谓Promise,简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果。从语法上说,Promise 是一个对象,从它可以获取异步操作的消息。Promise 提供统一的 API,各种异步操作都可以用同样的方法进行处理。
了解什么是 Promise 对象
比如下面这种
// 模拟获取code,然后将code传给后台,成功后获取userinfo,再将userinfo传给后台// 登录wx.login({ success: res => { let code = res.code // 请求 imitationPost({ url: '/test/loginWithCode', data: { code }, success: data => { // 获取userInfo wx.getUserInfo({ success: res => { let userInfo = res.userInfo // 请求 imitationPost({ url: '/test/saveUserInfo', data: { userInfo }, success: data => { console.log(data) }, fail: res => { console.log(res) } }) }, fail: res => { console.log(res) } }) }, fail: res => { console.log(res) } }) }, fail: res => { console.log(res) }})
下面分析如何用Promise来进行简化代码
因为微信小程序异步api都是success和fail的形式,所有有人封装了这样一个方法:
promisify.js
module.exports = (api) => { return (options, ...params) => { return new Promise((resolve, reject) => { api(Object.assign({}, options, { success: resolve, fail: reject }), ...params); }); }}
先看最简单的:
// 获取系统信息wx.getSystemInfo({ success: res => { // success console.log(res) }, fail: res => { }})
使用上面的promisify.js简化后:
const promisify = require('./promisify')const getSystemInfo = promisify(wx.getSystemInfo)getSystemInfo().then(res=>{ // success console.log(res)}).catch(res=>{})
getSystemInfo
可以看到简化后的回调里少了一个缩进,并且回调函数从9行减少到了6行。
回调金字塔的简化效果
那么再来看看最开始的那个回调金字塔
const promisify = require('./promisify')const login = promisify(wx.login)const getSystemInfo = promisify(wx.getSystemInfo)// 登录login().then(res => { let code = res.code // 请求 pImitationPost({ url: '/test/loginWithCode', data: { code }, }).then(data => { // 获取userInfo getUserInfo().then(res => { let userInfo = res.userInfo // 请求 pImitationPost({ url: '/test/saveUserInfo', data: { userInfo }, }).then(data => { console.log(data) }).catch(res => { console.log(res) }) }).catch(res => { console.log(res) }) }).catch(res => { console.log(res) })}).catch(res => { console.log(res)})
关于如何在微信小程序中使用Promise就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
c语言网络技术和编程语言总结
c语言对应的三级考试网络技术
网站服务器后台如何加防护密码
c语言软件开发步骤
c语言中网络技术知识点
服务器对权限提升的防护措施
怎么在阿里云租服务器
黑苹果能做web服务器吗
c语言和网络技术哪个好考
云服务器2核4G是什么性能
回放数据库
如何确认服务器ip
江南大队网络安全检查
steam设置代理服务器
电脑做分布式储存服务器网络搭建
软件开发的产品经理职责
数据库管理优点
辽宁北斗卫星授时服务器云主机
管理自己的服务器
朝鲜语软件开发人员
学生课程管理数据库设计
小学生数据库模板
成都天府服务器
内网文件管理服务器hfs
肿瘤信号通路数据库
电脑微信id数据库
赞皇高科技软件开发
关系型数据库驱动图解
沈阳软件开发app流程
linux软件开发过程
外国服务器怎么注册
连接上服务器没有操作界面
网络安全从业人员高校排行
小学生数据库模板
上海埃森哲面试对日软件开发
山东阿利狼网络技术有限公司地址
r910服务器能上什么cpu
网络安全教育 调查
昭华网络技术
数据库干什么用的