当前位置: 首页 > news >正文

解决微信小程序回调地狱问题

一、背景

    小程序开发经常遇到根据网络请求结果,然后继续 处理下一步业务操作,代码如下:

//1第一个请求 
wx.request({url:"https://example.com/api/",data:data,success:function(res){//2第二个请求 wx.request({url:"https://example.com/api/",data:data,success:function(res){//3第三个请求 wx.request({url:"https://example.com/api/",data:data,success:function(res){console.log(res.data)},fail:function(err){console.log(err)}},fail:function(err){console.log(err)}})},fail:function(err){console.log(err)}})

这段代特点:层层嵌套,逻辑负责可读性低,不易维护。解决方案使用 new Promise((resolve, reject) => {})可使用异步顺序执行来解决。

二、代码示例

    //1、分步获取接口数据new Promise((resolve, reject) => {return resolve(that.getCollectListData());//获取接口数据1}).then(res => {return that.getDoctorListData();//获取接口数据2}).then(res => {that.initData();//显示数据}).catch(err => {});

第一个请求函数代码示例

//请求接口函数getCollectListData() {var that = this;var usId = 'userId';var result = new Promise(function (resolve, reject) {//对象let obj = {method: "GET",showLoading: false,data: {'userId': usId},url: '/de/api/eva',};httpUtilsDeal.request(obj).then(res => {if (res.data.code == 200) {resolve(res);}}).catch(err => {reject(err)});})return result;},

第二个函数数据

//getDoctorListData() {var that = this;var usId = 'userId';var result = new Promise(function (resolve, reject) {//对象let obj = {method: "GET",showLoading: false,data: {'readRecord.izCollect': 1,'readRecord.userId': usId},url: '/iu/api/k/listPage',};httpUtilsDeal.request(obj).then(res => {if (res.data.code == 200) {resolve(res);}}).catch(err => {reject(err)});})return result;},

http://www.lryc.cn/news/155771.html

相关文章:

  • cron介绍
  • mkp勒索病毒的介绍和防范,勒索病毒解密,数据恢复
  • 【面试精品】关于面试会遇到的Apache相关的面试题
  • python对文件转md5,用于文件重复过滤
  • mac苹果电脑删除顽固残留软件图标
  • 【jsvue】联合gtp仿写一个简单的vue框架,以此深度学习JavaScript
  • linux centos7 系统之编程:求水仙花数
  • git中的cherry-pick和merge有些区别以及cherry-pick怎么用
  • 【前端】CSS-Flex弹性盒模型布局
  • Android AAPT: error: resource color 异常原因处理
  • C++std::function和std::bind()的概念
  • QT Creator工具介绍及使用
  • python爬虫13:pymysql库
  • 权限管理 ACL、RBAC、ABAC的学习
  • python的re正则表达式
  • 【算法与数据结构】700、LeetCode二叉搜索树中的搜索
  • SpringBoot v2.7.x+ 整合Swagger3入坑记?
  • 说说你了解的 CDC
  • SpingMvc入门
  • JVM的故事——类文件结构
  • springboot自定义表格(动态合并单元格)
  • C++零碎记录(二)
  • 数学建模:回归分析
  • 数据库(一)
  • 【算法与数据结构】106、LeetCode从中序与后序遍历序列构造二叉树
  • kali 安装cpolar内网穿透实现 ssh 远程连接
  • 算法训练 第一周
  • 软件评测师之码制
  • ubuntu18安装cmake27的方法
  • 通讯编程006——NodeJS OPC UA Client开发简单教程