老熟女激烈的高潮_日韩一级黄色录像_亚洲1区2区3区视频_精品少妇一区二区三区在线播放_国产欧美日产久久_午夜福利精品导航凹凸

小程序實現訂單倒計時功能

最近項目遇到了 一個小問題,當訂單需要支付的時候,超過指定時間,自動關閉這個訂單,未到達訂單結束時間時,需要顯示訂單還有多久關閉, 如下圖:

成都創新互聯專注于雁山網站建設服務及定制,我們擁有豐富的企業做網站經驗。 熱誠為您提供雁山營銷型網站建設,雁山網站制作、雁山網頁設計、雁山網站官網定制、微信小程序開發服務,打造雁山網絡公司原創品牌,更為您提供雁山網站排名全網營銷落地服務。

小程序實現訂單倒計時功能

寫出的這個方法支持多個對象,看到技術群有很多人問這個問題,而沒有人回答,決定把這個解決方案貢獻出來(不知道算不算好的解決方案)

我的解決方案是: 后臺給出訂單的結束時間,然后再去請求服務器當前的時間,互相轉換成時間戳,然后相減 得出的結果是 xxx毫秒 然后 / 1000 就是真正的相差時間了。

JS文件

page({
 data: {
 
 },
 onLoad: function(){
 var that = this; // this 的指向性問題 需要在function 外保存
 wx.request({
  url: 'xxx',
  data: {xxx},
  success: function(result){
  that.setData({
   dataSourcesArray: result.data.order // 請求到的數據
  });
  /**
  * result.data.order 是 請求所有的訂單信息
  * serviceTime 是封裝的請求服務器 時間
  * 服務器的時間格式是 2018/08/01 17:35:08
  *
  * itemIndex 是防止列表 中的某一條數據已經被購買而導致修改數據時的錯亂
  *
  */
  that.serviceTime(function (res) {
   // 服務器的時間戳
   var nowYear = res.data.serviceTime.split(' ')[0];
   var nowTime = new Date(res.data.serviceTime).getTime();
   // 這里傳入只有未結束的訂單
   var orderDetail = [];
   for (var i = 0; i < result.data.order.length; i++) { 
   // 如果訂單未過期狀態
   if (result.data.order[i].state == '待付款') {
    result.data.order[i].itemIndex = i; 
    orderDetail.push(result.data.order[i]);
   }
   }
   result.data.order = orderDetail;
   that.operation(result);// 待付款的訂單傳入這個方法內
  });
  }
 })
 },
 /*
 * 這里應該不要用setInterval 應該用 setTimeout 的 避免造成 網絡阻塞
 */
 operation: function(result) { // 接收到沒有結束的訂單信息
 var that = this;
 time = setInterval(function () { // 循環執行
  that.serviceTime(function(res) {// 獲取服務器時間
  that.resetState(res, result); // 設置未到結束時間訂單的狀態
  });
 }, 1000);
 },
 // 設置未結束訂單的狀態
 /*
 ** res 請求獲取服務器的時間的結果集
 ** dataSourcesArray 是顯示頁面的訂單信息
 */
 resetState: function(res, result) {
 var nowTime = new Date(res.data.serviceTime).getTime();// 當前時間的時間戳
 
 for (let i = 0; i < result.data.order.length; i++) { // 循環添加 倒計時
  var index = result.data.order[i].itemIndex;
  var status = "dataSourcesArray[" + index + "]." + 'state';
  var showTime = "dataSourcesArray[" + index + "]." + 'showTime';
  var futureTime = new Date(result.data.order[i].expiryTime).getTime();
  // 未來的時間減去現在的時間 ;
  var resTime = (futureTime - nowTime) / 1000;
  // 結束時間
  var zero = futureTime - nowTime;
  if (zero >= 0) { // 認為還沒有到達結束的時間
  var timeSeconds = timestampToTime(resTime);
  this.setData({
   [showTime]: timeSeconds
  })
  } else { // 結束的時間已經到了
  result.data.order.splice(i, 1); // 該訂單自動結束時間 從這個列表中刪除 就不必老是循環他
  this.setData({
   [showTime]: "超過時間 訂單已經關閉",
   [status]: "訂單過期"
  });
  }
 
  if(result.data.order.length == 0){// 如果沒有可支付訂單 則停止這個訂單
  clearInterval(time);
  }
 }
 },
 // 請求到系統時間 調取成功之后執行回調函數
 serviceTime: function (fn){
 wx.request({
  url: 'https://www.xxx.cn/getTime', // 僅為示例,并非真實的接口地址
  header: {
  'content-type': 'application/json' // 默認值
  },
  success(res) {
  fn && fn(res);
  }
 })
 }
})
 
// 時間轉換
function timestampToTime(s) {
 var h = Math.floor(s / 3600 % 24);
 var min = Math.floor(s / 60) % 60;
 var sec = s % 60;
 h = add(h);
 min = add(min);
 sec = add(sec);
 return h + ':' + min + ':' + sec
}
 
// 添 0
function add(m) {
 return m < 10 ? '0' + m : m
}

wxml文件



 
 剩余支付時間
 {{item["showTime"]}}
 

最終效果圖 如下(支持多個列表):

小程序實現訂單倒計時功能

(當頁面離開時,應該清除這個定時器,頁面進來時也要觸發!)

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持創新互聯。


文章標題:小程序實現訂單倒計時功能
分享網址:http://www.xueling.net.cn/article/jiiocc.html

其他資訊

在線咨詢
服務熱線
服務熱線:028-86922220
TOP
主站蜘蛛池模板: 日韩欧美中文字幕在线观看 | 大地资源高清在线观看免费新浪 | 天堂网在线.www天堂 | 黄飞鸿对黄飞鸿 | av一区在线观看 | 精品一区二区三区四区 | 精品国产第一国产综合精品 | 中文av在线播放 | 法国《性迷宫》在线观看 | 8k8k成人网 | 欧美一级理论 | 9191国产视频 | 99热伊人| 一级毛片一级毛片一级毛片 | 亚洲大片免费观看 | 222aaa精品影院| 亚洲欧美日本a∨在线观看 欧美96在线丨欧 | 国产精品一区二区高清在线 | 黄色国产网站在线播放 | 在线免费看黄av | 全部免费A片在线观看VR系列 | 少妇xxxxx性开放中出 | 国产999精品久久久久久 | av熟女人妻一级毛片 | 欧美日韩久久精品 | 国产aⅴ无码久久丝袜美腿 国产麻豆精品一区二区 | 亚洲成人手机在线观看 | CHINESE极品人妻VIDEOS | 欧美精品八区 | 国产日韩欧美一区二区三区在线 | 永夜星河在线观看 | 国产国拍亚洲精品av在线 | 国产精品自产拍在线观看中文 | 成年无码专区在线蜜芽TV | 精品国产一区二区三区蜜殿 | 超碰一区二区三区 | 日本特一级黄色片 | 91高清视频在线观看 | 午夜男女爽爽影院网站 | 99产精品成人啪免费网站 | 国产高清在线a视频大全 |