由于最近两三个月一直在做一个项目,导致这短时间也没有时间写博客,现在项目基本结束,下面就将项目中遇到的问题记录下,便于以后查阅方便,同时给需要的人一点思路
今天主要讲解下微信小程序中遇到的一个问题——订单列表中待支付订单的支付倒计时问题。废话不多说,先给出主要解决代码:
/**
* 未支付订单倒计时
*/
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);
},
让我们一起遨游在代码的海洋里!