热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

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


我想要实现的效果是:可以上拉刷新,下拉加载,分别点击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 连续请求服务器写法,减少代码量
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

推荐阅读
  • Servlet多用户登录时HttpSession会话信息覆盖问题的解决方案
    本文讨论了在Servlet多用户登录时可能出现的HttpSession会话信息覆盖问题,并提供了解决方案。通过分析JSESSIONID的作用机制和编码方式,我们可以得出每个HttpSession对象都是通过客户端发送的唯一JSESSIONID来识别的,因此无需担心会话信息被覆盖的问题。需要注意的是,本文讨论的是多个客户端级别上的多用户登录,而非同一个浏览器级别上的多用户登录。 ... [详细]
  • 本文介绍了Java后台Jsonp处理方法及其应用场景。首先解释了Jsonp是一个非官方的协议,它允许在服务器端通过Script tags返回至客户端,并通过javascript callback的形式实现跨域访问。然后介绍了JSON系统开发方法,它是一种面向数据结构的分析和设计方法,以活动为中心,将一连串的活动顺序组合成一个完整的工作进程。接着给出了一个客户端示例代码,使用了jQuery的ajax方法请求一个Jsonp数据。 ... [详细]
  • 微信官方授权及获取OpenId的方法,服务器通过SpringBoot实现
    主要步骤:前端获取到code(wx.login),传入服务器服务器通过参数AppID和AppSecret访问官方接口,获取到OpenId ... [详细]
  • 本文介绍了使用AJAX的POST请求实现数据修改功能的方法。通过ajax-post技术,可以实现在输入某个id后,通过ajax技术调用post.jsp修改具有该id记录的姓名的值。文章还提到了AJAX的概念和作用,以及使用async参数和open()方法的注意事项。同时强调了不推荐使用async=false的情况,并解释了JavaScript等待服务器响应的机制。 ... [详细]
  • 本文介绍了C#中生成随机数的三种方法,并分析了其中存在的问题。首先介绍了使用Random类生成随机数的默认方法,但在高并发情况下可能会出现重复的情况。接着通过循环生成了一系列随机数,进一步突显了这个问题。文章指出,随机数生成在任何编程语言中都是必备的功能,但Random类生成的随机数并不可靠。最后,提出了需要寻找其他可靠的随机数生成方法的建议。 ... [详细]
  • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
  • WebSocket与Socket.io的理解
    WebSocketprotocol是HTML5一种新的协议。它的最大特点就是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话,属于服务器推送 ... [详细]
  • 本文介绍了django中视图函数的使用方法,包括如何接收Web请求并返回Web响应,以及如何处理GET请求和POST请求。同时还介绍了urls.py和views.py文件的配置方式。 ... [详细]
  • 解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法
    本文介绍了解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法,包括检查location配置是否正确、pass_proxy是否需要加“/”等。同时,还介绍了修改nginx的error.log日志级别为debug,以便查看详细日志信息。 ... [详细]
  • 本文介绍了在wepy中运用小顺序页面受权的计划,包含了用户点击作废后的从新受权计划。 ... [详细]
  • 网络请求模块选择——axios框架的基本使用和封装
    本文介绍了选择网络请求模块axios的原因,以及axios框架的基本使用和封装方法。包括发送并发请求的演示,全局配置的设置,创建axios实例的方法,拦截器的使用,以及如何封装和请求响应劫持等内容。 ... [详细]
  • Spring常用注解(绝对经典),全靠这份Java知识点PDF大全
    本文介绍了Spring常用注解和注入bean的注解,包括@Bean、@Autowired、@Inject等,同时提供了一个Java知识点PDF大全的资源链接。其中详细介绍了ColorFactoryBean的使用,以及@Autowired和@Inject的区别和用法。此外,还提到了@Required属性的配置和使用。 ... [详细]
  • MySQL语句大全:创建、授权、查询、修改等【MySQL】的使用方法详解
    本文详细介绍了MySQL语句的使用方法,包括创建用户、授权、查询、修改等操作。通过连接MySQL数据库,可以使用命令创建用户,并指定该用户在哪个主机上可以登录。同时,还可以设置用户的登录密码。通过本文,您可以全面了解MySQL语句的使用方法。 ... [详细]
  • 本文介绍了一个React Native新手在尝试将数据发布到服务器时遇到的问题,以及他的React Native代码和服务器端代码。他使用fetch方法将数据发送到服务器,但无法在服务器端读取/获取发布的数据。 ... [详细]
  • 一、什么是闭包?有什么作用什么是闭包闭包是定义在一个函数内部的函数,它可以访问父级函数的内部变量。当一个闭包被创建时,会关联一个作用域—— ... [详细]
author-avatar
卡布基诺2502934121
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有