使用微信小程序api的过程中,发现部分API有坑,有的文档说明返回promise但是返回了undefined
经过查资料,发现大家写的方式不够优雅,也没有兼容原调用方式。
于是自己动手封装了一个promisify,实现代码如下。
const promisifyWx = new Proxy(wx, {
get(wx, api) {
if (typeof wx[api] === 'function') {
return options => new Promise((resolve, reject) => {
wx[api]({
...options,
success(res) {
options.success?.(res);
resolve(res);
},
fail(err) {
options.fail?.(err);
reject(err);
},
complete() {
options.complete?.();
},
});
});
} else {
return wx[api];
}
},
});
export default promisifyWx;
//使用方式示例
import wxapi from 'promisifyWx';
wxapi.connectWifi({ SSID: '', password: '' });