微信小程序api promise调用封装(promisifyWx)

220 阅读1分钟

使用微信小程序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: '' });