如何在微信小程序中使用Promise
发表于:2022-08-20 作者:安全数据网编辑
编辑最后更新 2022年08月20日,这篇文章给大家介绍如何在微信小程序中使用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是什么性能
怎么改变数据库表格的类型
普通人怎样保护网络安全
斑马ai课的软件开发商
运营商网络安全设计
系统软件开发实践收获
刻舟求剑翻译软件开发
使用网络安全日记
数据库的的特点是
广州访客管理软件开发怎么样
查询所有数据库实例列表
数据库编修改语句
网络安全稳定的词语
服务器rpc是什么意思
哪个公立中专软件开发最好
亿弘网络技术
首页数据库导航
伽玛网络技术有限公司
南通濠云网络技术公司
软件开发采购合同注意事项
添加一个对象到数据库中
图数据库和并行图处理系统
mimic数据库的优缺点
检查服务器是否正在运行
网络安全关键是
软件开发模型例子
西藏算力服务器租赁价格表
阿里云服务器 绑定域名
闵行区参考数据库服务清单
衡阳市公安局网络安全保卫
网络安全知识内容中学生