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

这篇具有很好参考价值的文章主要介绍了解决微信小程序回调地狱问题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、背景

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

//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;
  },

第二个函数数据文章来源地址https://www.toymoban.com/news/detail-702572.html


 //
  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;
  },

到了这里,关于解决微信小程序回调地狱问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Promise】一文带你了解promise并解决回调地狱

    为什么需要promise 需求 通过ajax请求id,再根据id请求用户名,再根据用户名获取email 回调地狱 在回调函数中嵌套回调 在上述代码中通过不断请求数据,代码逐级向外递归,形成了回调地狱。 使用promise就可以完美解决,并且让我们的代码更加美观。 Promise是一个构造函数,通过n

    2024年02月21日
    浏览(41)
  • HarmonyOS通过async与await同异步转换 解决异步回调地狱

    我在 HarmonyOS 发送http网络请求 中讲述了 HTTP请求的基本方式 然后 就带出了 回调地狱的问题 然后 上文 HarmonyOS 通过Promise 解决异步回调地狱问题 我们用Promise的解决方案 搞定了 这个问题 但是 Promise 这种写法 可读性其实没有那么优秀 没有搞定 Promise return规则的人甚至都看不懂

    2024年01月24日
    浏览(47)
  • ES6中Promise、Async/await解决回调地狱、Proxy代理

    1.Promise 作为一些场景必须要使用的一个对象,比如说我们要发送一个请求,但是在发送这个请求之前我们需要以另一个请求返回的结果中的一个数据作为这次请求的参数,也就是说这个请求必须在另一个请求后面,当然我们用setTimeout定时器写一个延时函数也可以,但是当有

    2024年02月12日
    浏览(32)
  • 【微信小程序】Java实现微信支付(小程序支付JSAPI-V3)java-sdk工具包(包含支付出现的多次回调的问题解析,接口幂等性)

          对于一个没有写过支付的小白,打开微信支付官方文档时彻底懵逼 ,因为 微信支付文档太过详细, 导致我无从下手,所以写此文章,帮助第一次写支付的小伙伴梳理一下。 一、流程分为三个接口:(这是前言,先看一遍,保持印象,方便理解代码) 1、第一个接口:

    2024年01月16日
    浏览(77)
  • APP 跳转微信小程序和回调

    在同一开放平台账号下的移动应用及小程序无需关联即可完成跳转,非同一开放平台账号下的小程序需与移动应用(APP)成功关联后才支持跳转。 可在“管理中心-移动应用-应用详情-关联小程序信息”,为通过审核的移动应用发起关联小程序操作。 App打开下程序有两种方式

    2023年04月09日
    浏览(68)
  • 微信小程序点击头像不触发onChooseAvatar回调

    调试基础库为2.14.1版本时,击头像不触发onChooseAvatar回调 代码如下: 将基础库改为2.30.0后问题解决。效果如图

    2024年02月10日
    浏览(40)
  • java微信小程序支付-回调(Jsapi-APIv3)

            准备:  接入前准备-小程序支付 | 微信支付商户平台文档中心 准备好了就可以获得( 第二点里需要的参数 ):         参数1 商户号 merchantId:xxxxxx(全是数字)         参数2 商户APIV3密钥 apiV3key:xxxxxxx(32位字母数字大小写串,开发自己准备的)         参

    2024年02月08日
    浏览(52)
  • 微信小程序支付踩坑notify_url(支付回调)

    最近做了微信小程序支付,支付成功之后发现notify_url回调地址竟然没有访问。 检查了无数次代码,下单结果里面的回调地址看了又看,都没有错啊。 把回调地址复制出来到浏览器上面,外网也是可以访问的啊。 然后我再分析,为什么以前公众号支付都没有出现这种类型的错

    2024年02月11日
    浏览(45)
  • SpringBoot对接微信小程序支付功能开发(二,支付回调功能)

    接着上一篇: SpringBoot对接微信小程序支付功能开发(一,下单功能) 在上一篇下单功能中我们有传支付结果回调地址。 下面是回调接口实现 根据官网给的参数进行业务处理 这就完成了,微信支付回调你的地址,并且把支付的信息传进来,剩下就要根据自己业务进行操作。

    2024年02月11日
    浏览(64)
  • 微信小程序——解决异步问题

    在小程序中,异步请求通常是通过使用微信小程序提供的API来实现的,最常见的是使用wx.request()函数来发送异步网络请求。解决小程序的异步请求问题通常涉及以下几个方面: 在微信小程序中,异步问题可能会对程序的执行顺序和数据更新产生影响。以下是几个与异步相关的

    2024年02月05日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包