zoukankan      html  css  js  c++  java
  • 用Promise+async/await 封装wx-request防止回调地狱

    promise的优点是什么?

    • promise是一个对象,对象和函数的区别就是对象可以保存状态,函数不可以(闭包除外)
    • 并未剥夺函数return的能力,因此无需层层传递callback,进行回调获取数据
    • 代码风格,容易理解,便于维护
    • 多个异步等待合并便于解决
    • async/await结合promise可以进一步简化,省去.then(),使函数类似同步的方式执行
      //微信小程序wx-request结合promise还有async await进行封装
      var reqTime = 0; //记录请求次数
      const request = (params) => {
          reqTime++;
          //加载弹框
          wx.showLoading({
              title: '加载中...',
              mask: true
          });
          //返回
          return new Promise((resolve, reject) => {
              wx.request({
                  //解构params获取请求参数
                  ...params,
                  success: (result) => {
                      resolve(result);
                  },
                  fail: (err) => {
                      reject(err);
                  },
                  complete: () => {
                      reqTime--;
                      //停止加载
                      if (!reqTime)
                          wx.hideLoading();
                  }
              });
          });
      }
      
      //普通调用方式
      function getSwiper1() {
          request({
              url: "https://api-hmugo-web.itheima.net/api/public/v1/home/swiperdata"
          }).then(res => {
              console.log(res);
          });
      }
      
      //async await
      async function getSwiper2() {
          const res = await request({
              url: "https://api-hmugo-web.itheima.net/api/public/v1/home/swiperdata"
          });
          console.log(res);
      }
  • 相关阅读:
    qt install (1)
    learning rewind func
    learning strrchr func
    learning memchr func
    git lfs setpu(4)
    大端与小端
    git branch/meger step(3)
    git log/show/HEAD step(2)
    调用外部EXE文件
    获取计算机上的所有进程
  • 原文地址:https://www.cnblogs.com/aeipyuan/p/12638622.html
Copyright © 2011-2022 走看看