IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> 微信小程序优化(ES7解决原生API陷入回调地狱) -> 正文阅读

[移动开发]微信小程序优化(ES7解决原生API陷入回调地狱)

项目场景:

最近回去维护前段时间写的微信小程序的时候发现一个问题,微信小程序的原生API都是回调函数,那同时使用多个就会陷入回调地狱,代码结构冗杂、难以维护


问题描述:

1.请求业务代码冗杂
请添加图片描述
2.内置api陷入回调地狱
请添加图片描述
3.其他…


解决方案:

请添加图片描述

  • util.js
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);
    });
  };
};
 
 
 
export {
  promisic
};
  • http.js
import {
  config
} from "../config/config";
import {
  promisic
} from "./util";

class Http {
  static async request({
    url,
    data,
    method,
    header
  }) {
    const res = await promisic(wx.request)({
      url: `${config.apiBaseUrl}${url}`,
      data,
      method,
      header
    })
    return res.data
  }
}

export {
  Http
}
  • config.js
const config = {
  apiBaseUrl: "https://******/api/v1/",
  form_header: {
    "content-type": "application/x-www-form-urlencoded",
  },
  json_header: {
    "content-type": "application/json",
  }
}

export {
  config
}
  • network.js
import { config } from "../config/config";
import {
  Http
} from "../utils/http";

class Network {
  static async getHomeLocationA(zh,mm) {
    return await Http.request({
      url: `admin/admin_login`,
      method: 'POST',
      header: config.form_header,
      data: {
        zh: zh,
        mm: mm
    }

    })
  }
}

export {
  Network
}
  • index.js
import { Network } from "../../model/network";
// pages/index/index.js
Page({

  /**
   * 页面的初始数据
   */
  data: {

  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: async function (options) {
    const data = await Network.getHomeLocationA('2683070430', '123456789')
    console.log(data)
  },

请添加图片描述

Tip:

因为上述的代码使用代理模式封装请求,原生api支持promise,微信开发者工具不支持部分语法,需要开启增强编译,高版本开发工具直接勾选下面这个选项,增强编译已经合并。请添加图片描述

author: KK
time :2021年9月29日13:27:26
flag:7/30

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章           查看所有文章
加:2021-09-30 12:02:39  更:2021-09-30 12:05:17 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 19:42:20-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码