由于最近两三个月一直在做一个项目,导致这短时间也没有时间写博客,现在项目基本结束,下面就将项目中遇到的问题记录下,便于以后查阅方便,同时给需要的人一点思路
今天主要讲解下微信小程序中遇到的一个问题——订单列表中待支付订单的支付倒计时问题。废话不多说,先给出主要解决代码:
/** * 未支付订单倒计时 */ countDown:function(){ var that = this; that.data.timer = setInterval(function () { var orders = that.data.orderArray; for (var i = 0; i orders.length; i++) { var status = orders[i].status; if (status == 0) { var create_time = orders[i].create_time; //计算剩余时间差值 var leftTime = (new Date(create_time).getTime() + 30 * 60 * 1000) - (new Date().getTime()); if (leftTime 0) { //计算剩余的分钟 var minutes = util.formatNumber(parseInt(leftTime / 1000 / 60 % 60, 10)); //计算剩余的秒数 var seconds = util.formatNumber(parseInt(leftTime / 1000 % 60, 10)); var left_time = minutes + ":" + seconds; orders[i].left_time = left_time; }else{ //移除超时未支付的订单 orders.splice(i, 1); } } } that.setData({ orderArray:orders }); }, 1000); },讲解:定义一个定时器,每秒执行一次。定时器内对订单列表数组进行遍历,根据订单的状态,只处理未支付订单,根据自己的业务逻辑计算订单支付剩余时间(我的订单支付时间是30分钟),如果剩余时间大于0,格式化剩余时间并显示,否则移除超时未支付的订单(防止重复遍历)。最后,不要忘记数据回写setData,否则剩余支付时间不会显示!!!
在退出页面的时候,不要忘记清除定时器
/** * 生命周期函数--监听页面卸载 */ onUnload: function () { clearInterval(this.data.timer); },让我们一起遨游在代码的海洋里!













