如何将小程序内置非promise API转换为promise对象(风袖小程序的学习)

非常重要,便于项目大局观,使用es7的 async和await

如何将小程序内置非promise API转换为promise

这里是我封装的一个wx.request函数如何将wx.request转换成promise对象呢?
在这里插入图片描述

转换的方法

创建一个文件夹放入代码,回到你需要引入的地方引入即可

const promisic = function (func) {
  return function (params = {}) {
    return new Promise((resolve, reject) => {
      const args = Object.assign(params, {
        success: (res) => {
          resolve(res);
        },
        fail: (error) => {
          reject(error);
        }
      });
      func(args);
    });
  };
};

在实战项目中使用

import { config } from '../config/config'
import { promisic } from './util'
class Http {
  //如何让小程序返回promise对象
  static async request({ 
    url,
    //callback,加上async 和 await 可以当作是同步函数的调用
    method = "GET"
  }) 
  {
    //把结果return回去
   return  await promisic(wx.request) ({
      url: `${config.apiBaseUrl}${url}`,
      method
      //使用promise就不用使用回调success
      // success: res => {
      //   callback(res.data)
      // }
    })
  }
}

// wx.request
// 照常传参
// promistic(wx.request)({
//     url: '',
//     data: {

//     }
// })

export {
  Http
}

检验是否封装http请求成功并返回promise对象
在这里插入图片描述

该函数十分重要可以将所有wx开头的函数全部转换为promise对象便于使用async 和 await来编程 非常有利于后期项目的维护和迭代

在编译前请勾选上微信开发者工具中的增加编译这样才能支持es7的async和await

发布了16 篇原创文章 · 获赞 36 · 访问量 2383

猜你喜欢

转载自blog.csdn.net/m0_46269977/article/details/105652389