美文网首页微信小程序开发
小程序 Promise 连续请求服务器写法,减少代码量

小程序 Promise 连续请求服务器写法,减少代码量

作者: 一个冬季 | 来源:发表于2018-03-23 11:47 被阅读64次
效果展示图.png

我想要实现的效果是:可以上拉刷新,下拉加载,分别点击tab都还能够请求服务器。我想的最好的方法是把日期和月份这2个抽离出来做成一个方法,然后上拉刷新,下拉加载,点击tab分别调用日期和月份方法即可。我尝试百度/google,见到最多的链式写法,以获取用户数据举例:

    //这里的操作都是举例说明。
     wxLogin()
            .then(=>res{
                  console.log(res.code)
                  return wxRequest.getUserOpenId(url, params)//请求获取用户ID
              })
            .then(=>res{
                  console.log(res.openId)
                  return wxRequest.getUserPhone());//请求获取用户手机
              })
            .catch()

在index.js页面 ; getUserOpenId()和getUserPhone()都是封装在另外一个js里面的。或者是直接getUserMessage().then(res=>).catch();这样直接获取用户数据了。

     wxRequest.getUserMessage()
                 .then(=>res{
                      console.log(res.code);
                   })
                 .catch()

当然我这样举例还是不能说明存在什么问题,那么如果我要像上面图那样获取日期数据,月份数据怎么办呢?难道按照第一个那样写,上拉加载那里写一堆,下拉刷新那里一堆,切换tab也写一堆重复的代码?还是说我管你是上拉刷新,还是下拉加载好,我直接通过一个接口在一起获取数据?所以我通过百度/google到他们写的还不够完善(不是写的不好哈)
我的写法:

//我只是抽取我部分代码来展示
Page({
data:{
    
},
onLoad: function () {//生命周期
    this.readUserMesage();
},
readUserMesage(): function () {//获取用户信息,并获取按日期的数据
    this.showLoading();
    let parameters = 'user?ptId=aaaaaaaaaaaaaa';
    api.getRequest({
      parameters: parameters,
    }).then(res => {
      return this.readDayData();     //获取日期信息
    }).catch(error => {
      this.hideLoading();
    });
  },
 readMonthData() {//把月份单独抽取出来
    var url = 'dailypay?xxxxx=aaaa&yyy=bbbbbb';
    var parameters = { parameters: url }
    return api.getRequest(parameters)//我这里是封装请求服务器的,注意我加了return
      .then(res => {
           //这里就可以获取到返回的res的集合数据
      }).catch(error => {
        console.log(JSON.stringify(error));
        this.hideLoading();
      });
  },
readDayData() {//把日期单独抽取出来
    var url = 'dailypay?xxxxx=aaaa&yyy=bbbbbb';
    var parameters = { parameters: url }
    return api.getRequest(parameters)//我这里是封装请求服务器的,注意我加了return
      .then(res => {
              //这里就可以获取到返回的res的集合数据
      }).catch(error => {
        this.hideLoading();
      });
  },
onPullDownRefresh() {//下拉刷新
    if (this.data.currentIndex == 0) {//如果当前是在日期
      this.readDayData();
    } else {//如果当前是在月份
      this.readMonthData();
    }
  },
onReachBottom() {//上拉加载
    if (this.data.currentIndex == 0) {
      this.readDayData();
    } else {
      this.readMonthData();
    }
  },
)}

好了,我的方法介绍完成了。这样做就可以减少代码量了。

相关文章

  • 小程序 Promise 连续请求服务器写法,减少代码量

    我想要实现的效果是:可以上拉刷新,下拉加载,分别点击tab都还能够请求服务器。我想的最好的方法是把日期和月份这2个...

  • 小程序封装网络请求

    对小程序原生的请求代码进行封装 Promise封装fetch模块 utils/fetch.js 调用fetch模块

  • 微信小程序发送数据和接收数据

    本节知识点 展示小程序get请求和post请求 (一) 小程序get请求 wxml代码 js代码 (二)小程序PO...

  • 小程序的回调 Promise化。

    将小程序的异步回调写法改成promise风格好处:可以直接使用async等基于promise的异步语法。 pwx....

  • 微信小程序请求改造

    原生小程序请求 promise 封装wx.request 回顾promise使用 开始封装 首先在utils下创建...

  • Promise的连续then写法

    原文https://www.iteye.com/blog/xieye-2400567

  • 微信小程序总结 -- 基础

    微信小程序 一:项目开始 注册账号 申请小程序账号AppID:服务器域名:小程序发请求必须先配置请求的服务器域名 ...

  • Promise

    promise作用:为了解决回调地狱问题,但并不能减少代码量,将多次的嵌套变成并联1)Promise是一个构造函数...

  • es6:promise

    异步任务,请求服务器数据: 传入请求地址,调用 调用结果 等待多个promise:Promise.all(prom...

  • 微信小程序http请求封装

    微信小程序中request请求都是异步请求的,封装的http请求 使用promise请求将异步请求变成同步化,保存...

网友评论

    本文标题:小程序 Promise 连续请求服务器写法,减少代码量

    本文链接:https://www.haomeiwen.com/subject/oedaqftx.html