将小程序的异步回调写法改成promise风格
好处:可以直接使用async等基于promise的异步语法。
promisify.js
const promisify = (originFunction) => {
return (params = {}) => {
return new Promise((resolve, reject) => {
let returnFunctionObj = {
success: (success_info) => {
resolve(success_info)
},
fail: (fail_info) => {
reject(fail_info)
}
}
// 使用promise.then来接受success,catch来接受fail,本文件没考虑complete回调,需要的话可以也resolve并返回不同的参
// 使用Object.assign混合原始options,这样你依然可以传入配置项
params = Object.assign(params, returnFunctionObj);
originFunction(params)
})
}
}
export default promisify;
pwx.js
import promisify from "@/utils/promisify.js"; // 引用上面的文件
const pwx_handler = {
get(target,name){
if(name in wx){
return promisify(wx[name])
}
}
}
let pwx = new Proxy({},pwx_handler)
// 使用Proxy监听,并匹配wx对应的方法
export default pwx
some.js
import pwx from '@/utils/pwx.js';
// 即可通过pwx来直接引用wx对象拥有的方法
pwx
.login({/** 传入你想要的配置 **/})
.then(resp => {
return pwx.getUserInfo({ lang: "zh_CN" });
})
.then(resp => {
pwx.setStorage({
key: "userInfo",
data: resp.rawData
});
})
.catch(resp => {
console.log(resp);
});