最近在公司中负责微信小程序的工作,发现小程序中经常会用到获取用户信息等功能。而wx.login、wx.getSetting等小程序的API都是回调函数的形式。而获取用户信息需要wx.login(获取code)、通过code到后台请求userId、wx.getSetting获取用户设置和wx.getUserInfo四个步骤。造成的回调嵌套太过于繁琐,就想着能不能把回调形式封装一下,以Promise的方式返回。其中wx.request由于涉及到传参,与其它API在封装时稍有差异。
这里借鉴了思否上一篇文章的写法传送门
promise.js
function promisify(api) {
return (options, params) => {
return new Promise((resolve, reject) => {
api(Object.assign({}, options, {
success: res => resolve(res),
fail: res => reject(res)
}, params))
})
}
}
module.exports.promisify = promisify
引入promise.js,以ws.login为例
const pro = require('./promise.js').promisify
const login = pro(ws.login)
login().then(res => {
console.log(res.data)
}).catch(res => {
console.log(res.errMsg)
})
wx.request的封装(调用时需要传入url等可选参数)
api.js
const pro = requ

本文介绍了在微信小程序开发中,如何将常见的回调函数如wx.login、wx.getSetting等转换为Promise形式,以解决回调地狱问题。作者分享了一个简单的Promise.js封装示例,包括wx.login和wx.request的封装,使得调用更加简洁。
最低0.47元/天 解锁文章
3122

被折叠的 条评论
为什么被折叠?



