小程序的回调 Promise化。

将小程序的异步回调写法改成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);
      });
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容