小程序模板網(wǎng)

小程序 Promise 連續(xù)請(qǐng)求服務(wù)器寫法,減少代碼量

發(fā)布時(shí)間:2018-05-08 14:24 所屬欄目:小程序開(kāi)發(fā)教程

我想要實(shí)現(xiàn)的效果是:可以上拉刷新,下拉加載,分別點(diǎn)擊tab都還能夠請(qǐng)求服務(wù)器。我想的最好的方法是把日期和月份這2個(gè)抽離出來(lái)做成一個(gè)方法,然后上拉刷新,下拉加載,點(diǎn)擊tab分別調(diào)用日期和月份方法即可。我嘗試百度/google,見(jiàn)到最多的鏈?zhǔn)綄懛ǎ垣@取用戶數(shù)據(jù)舉例:

 

				
  1. //這里的操作都是舉例說(shuō)明。
  2. wxLogin()
  3. .then(=>res{
  4. console.log(res.code)
  5. return wxRequest.getUserOpenId(url, params)//請(qǐng)求獲取用戶ID
  6. })
  7. .then(=>res{
  8. console.log(res.openId)
  9. return wxRequest.getUserPhone());//請(qǐng)求獲取用戶手機(jī)
  10. })
  11. .catch()

在index.js頁(yè)面 ; getUserOpenId()和getUserPhone()都是封裝在另外一個(gè)js里面的?;蛘呤侵苯觛etUserMessage().then(res=>).catch();這樣直接獲取用戶數(shù)據(jù)了。

 

				
  1. wxRequest.getUserMessage()
  2. .then(=>res{
  3. console.log(res.code);
  4. })
  5. .catch()

當(dāng)然我這樣舉例還是不能說(shuō)明存在什么問(wèn)題,那么如果我要像上面圖那樣獲取日期數(shù)據(jù),月份數(shù)據(jù)怎么辦呢?難道按照第一個(gè)那樣寫,上拉加載那里寫一堆,下拉刷新那里一堆,切換tab也寫一堆重復(fù)的代碼?還是說(shuō)我管你是上拉刷新,還是下拉加載好,我直接通過(guò)一個(gè)接口在一起獲取數(shù)據(jù)?所以我通過(guò)百度/google到他們寫的還不夠完善(不是寫的不好哈)  我的寫法:

 

				
  1. //我只是抽取我部分代碼來(lái)展示
  2. Page({
  3. data:{
  4.  
  5. },
  6. onLoad: function () {//生命周期
  7. this.readUserMesage();
  8. },
  9. readUserMesage(): function () {//獲取用戶信息,并獲取按日期的數(shù)據(jù)
  10. this.showLoading();
  11. let parameters = 'user?ptId=aaaaaaaaaaaaaa';
  12. api.getRequest({
  13. parameters: parameters,
  14. }).then(res => {
  15. return this.readDayData(); //獲取日期信息
  16. }).catch(error => {
  17. this.hideLoading();
  18. });
  19. },
  20. readMonthData() {//把月份單獨(dú)抽取出來(lái)
  21. var url = 'dailypay?xxxxx=aaaa&yyy=bbbbbb';
  22. var parameters = { parameters: url }
  23. return api.getRequest(parameters)//我這里是封裝請(qǐng)求服務(wù)器的,注意我加了return
  24. .then(res => {
  25. //這里就可以獲取到返回的res的集合數(shù)據(jù)
  26. }).catch(error => {
  27. console.log(JSON.stringify(error));
  28. this.hideLoading();
  29. });
  30. },
  31. readDayData() {//把日期單獨(dú)抽取出來(lái)
  32. var url = 'dailypay?xxxxx=aaaa&yyy=bbbbbb';
  33. var parameters = { parameters: url }
  34. return api.getRequest(parameters)//我這里是封裝請(qǐng)求服務(wù)器的,注意我加了return
  35. .then(res => {
  36. //這里就可以獲取到返回的res的集合數(shù)據(jù)
  37. }).catch(error => {
  38. this.hideLoading();
  39. });
  40. },
  41. onPullDownRefresh() {//下拉刷新
  42. if (this.data.currentIndex == 0) {//如果當(dāng)前是在日期
  43. this.readDayData();
  44. } else {//如果當(dāng)前是在月份
  45. this.readMonthData();
  46. }
  47. },
  48. onReachBottom() {//上拉加載
  49. if (this.data.currentIndex == 0) {
  50. this.readDayData();
  51. } else {
  52. this.readMonthData();
  53. }
  54. },
  55. )}

好了,我的方法介紹完成了。這樣做就可以減少代碼量了。



易優(yōu)小程序(企業(yè)版)+靈活api+前后代碼開(kāi)源 碼云倉(cāng)庫(kù):starfork
本文地址:http://22321a.com/wxmini/doc/course/24345.html 復(fù)制鏈接 如需定制請(qǐng)聯(lián)系易優(yōu)客服咨詢:800182392 點(diǎn)擊咨詢
QQ在線咨詢