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

news/2024/7/11 1:39:16 标签: 小程序, javascript, 前端, es6, vue.js

非常重要,便于项目大局观,使用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


http://www.niftyadmin.cn/n/1542389.html

相关文章

POWERDESIGNER 生成SQLSERVER 数据库出现乱码

这两天用PD做数据库建模,在从PDM-->DB时中文备注出现乱码,如:???(DD) 一直以为中文编码问题,可是我试了所有的中文编码方式,还是无法解决问题。 后来发开是PD生成的SQL语句有问题,PD自动生成的样例脚本如下&…

debian8安装harbor

这里的系统版本是debian8.8,harbor版本为1.1.2。 1、安装docker-ce 1.1、Install packages to allow apt to use a repository over HTTPS: # apt-get install \apt-transport-https \ca-certificates \curl \gnupg2 \software-properties-common 1.2、Add Docker’…

hibernate事务管理

一,什么是事务? 数据库事务是指由一个或多个SQL语句组成的工作单元,这个工作单元中的SQL语句相互依赖,如果有一个SQL语句执行失败,就必须撤销整个工作单元。 在并发环境中,多个事务同时访问相同的数据资源时…

Vue3.0全家桶抢先体验(Sam大佬解读)

Vue 3.0 全家桶抢先体验 1.vue: Beta 2.vue-router: Alpha 3.vuex: Alpha 4.vue-class-component: Alpha 5.vue-cli: Experimental support via vue-cli-plugin-vue-next 6.eslint-plugin-vue: Alpha 7.vue-test-utils: Alpha 8.vue-devtools: WIP 9.jsx: WIP 可以看…

Linux保证运行一个实例

1. const int PATH_MAX 1024; // 默认最大路径长度 inline std::string current_exe_name() {char buf[PATH_MAX] {0};int ret readlink("/proc/self/exe", buf, PATH_MAX);if (ret < 0 || ret > PATH_MAX) {return "";}std::string path(buf);…

DESCryptoServiceProvider 类加密和解密

usingSystem.Security.Cryptography; ///<summary>///加密 ///</summary>///<param name"pToEncrypt"></param>///<param name"sKey"></param>///<returns></returns>publicstringEncryp…

Typescript变量类型包括高级类型详解(全)

Typescript 我们先来看下如何为一个变量指定类型&#xff1a;为一个变量指定类型的语法是使用"变量: 类型"的形式&#xff0c;如下&#xff1a; let num: number 1231.布尔类型 类型为布尔类型的变量的值只能是 true 或 false&#xff0c;如下&#xff1a; let b…

python面试(十四)

1、下面代码会输出什么&#xff1f; map(lambda x:x*x,[y for y in range(3)]) [0, 1, 4] 答案2、下面代码会输出什么? def f(x, l [] ) for i in range(x): l.append(i*i) print l f(2) f(3,[3,2,1]) f(3) 1、[0, 1] 2、[3, 2, 1, 0, 1, 4] 3、[0, 1, 0, 1, 4] 答案3、数是数…