在写一个小程序的时候可能要使用到tt.getUserInfo,tt.getSystemInfo,tt.getSetting。。。这些有一个共同特点,都会有一个回调函数,并且我们会使用到success内的结果。如果项目中要使用到多个这样的api,不如统一处理,
用promise返回结果,避免层层回调,保持代码简洁
前提:使用promise封装一个函数这个要知道哦,如果还没有使用过,可以去看看我的第一篇文章,就是用promise封装的wx.request(); "(^_^)"
那我们直接看代码过程吧
一,可以把这些工具函数放到一个文件呀,例如utils.js中
/**
*
* 用来存放工具函数
*
*/
// 将小程序中需要填写success回调的异步函数promise化
function promiseInit(api) {
return function (obj = {}) {
return new Promise((resolve, reject) => {
obj = Object.assign(obj, {
success: res => {
// 成功时返回code为1
resolve({
code: 1,
data: res
});
},
fail: res => {
// 失败时返回code为0
resolve({
code: 0,
data: res
});
}
})
api(obj);
})
}
}
// 使用
const getUserInfo = promiseInit(tt.getUserInfo);
const downLoadFile = promiseInit(tt.downLoadFile);
module.exports = {
getUserInfo,
downLoadFile
}
在utils文件中写入了promise初始化的方法,然后将使用的apipromise化,只要符合条件,都可以promise化,然后导出就可以啦~
二,在index.js文件中使用吧
// 先要引入文件
const utils = require('../../utils/util');
Page({
data: {},
//注意这是promise函数,所以要结合async和await来使用
onLoad: async function (options) {
let result = await utils.getUserInfo();
console.log('用户信息',result);
}
})
这里是打印结果哦,data中就是获取到的用户信息,可以根据code的结果做判断
{code: 1, data: {…}}// 符合预期
如果对你有帮助记得点赞评论哦~
如果有错误,感谢指正哦~
下篇再见~