android 电商倒计时,微信小程序电商常用倒计时实现实例

微信小程序电商常用倒计时实现实例

wxml文件放个text

second: {{second}} micro second:{{micro_second}}

在js文件中调用

function countdown(that) {

var second = that.data.second

if (second == 0) {

// console.log("time out...");

that.setdata({

second: "time out..."

});

return ;

}

var time = settimeout(function(){

that.setdata({

second: second - 1

});

countdown(that);

}

,1000)

}

page({

data: {

second: 3

},

onload: function() {

countdown(this);

}

});

运行验证下,从10走到1s,然后显示时间到。

于是继续将毫秒完善,注意毫秒的步长受限于系统的时间频率,于是我们精确到0.01s即10ms

js

/* 秒级倒计时 */

function countdown(that) {

var second = that.data.second

if (second == 0) {

that.setdata({

second: "time out!",

micro_second: "micro_second too."

});

cleartimeout(micro_timer);

return ;

}

var timer = settimeout(function(){

that.setdata({

second: second - 1

});

countdown(that);

}

,1000)

}

/* 毫秒级倒计时 */

// 初始毫秒数,同时用作归零

var micro_second_init = 100;

// 当前毫秒数

var micro_second_current = micro_second_init;

// 毫秒计时器

var micro_timer;

function countdown4micro(that) {

if (micro_second_current <= 0) {

micro_second_current = micro_second_init;

}

micro_timer = settimeout(function(){

that.setdata({

micro_second: micro_second_current - 1

});

micro_second_current--;

countdown4micro(that);

}

,10)

}

page({

data: {

second: 2,

micro_second: micro_second_init

},

onload: function() {

countdown(this);

countdown4micro(this);

}

});

wxml文件

second: {{second}}s

{{micro_second}}

如此,当秒级运行完毕时,毫秒级timer即cleartimeout,并将字本显示为'micro_second too'

再添加一个countdown4micro方法,使得显示剩余 0:3:19 89这样形式的倒数

function dateformat(second) {

var datestr = "";

var hr = math.floor(second / 3600);

var min = math.floor((second - hr * 3600) / 60);

var sec = (second - hr * 3600 - min * 60);// equal to => var sec = second % 60;

datestr = hr + ":" + min + ":" + sec;

return datestr;

}

//目前有2个时钟,影响性能,合并下去掉countdown,于是countdown4micro变成以下的样子:

function countdown4micro(that) {

var loop_second = math.floor(loop_index / 100);

// 得知经历了1s

if (cost_micro_second != loop_second) {

// 赋予新值

cost_micro_second = loop_second;

// 总秒数减1

total_second--;

}

// 每隔一秒,显示值减1; 渲染倒计时时钟

that.setdata({

clock:dateformat(total_second - 1)

});

if (total_second == 0) {

that.setdata({

// micro_second: "",

clock:"时间到"

});

cleartimeout(micro_timer);

return ;

}

if (micro_second_current <= 0) {

micro_second_current = micro_second_init;

}

micro_timer = settimeout(function(){

that.setdata({

micro_second: micro_second_current - 1

});

micro_second_current--;

// 放在最后++,不然时钟停止时还有10毫秒剩余

loop_index ++;

countdown4micro(that);

}

,10)

}

如此这般,毫秒与时分秒是分别运行渲染的,再次改造,程序可读性更好。dateformat针对于毫秒操作,而不接受秒为数。同时还省却了计算100次为1s的运算

/**

* 需要一个目标日期,初始化时,先得出到当前时间还有剩余多少秒

* 1.将秒数换成格式化输出为xx天xx小时xx分钟xx秒 xx

* 2.提供一个时钟,每10ms运行一次,渲染时钟,再总ms数自减10

* 3.剩余的秒次为零时,return,给出tips提示说,已经截止

*/

// 定义一个总毫秒数,以一分钟为例。todo,传入一个时间点,转换成总毫秒数

var total_micro_second = 2 * 1000;

/* 毫秒级倒计时 */

function countdown(that) {

// 渲染倒计时时钟

that.setdata({

clock:dateformat(total_micro_second)

});

if (total_micro_second <= 0) {

that.setdata({

clock:"已经截止"

});

// timeout则跳出递归

return ;

}

settimeout(function(){

// 放在最后--

total_micro_second -= 10;

countdown(that);

}

,10)

}

// 时间格式化输出,如3:25:19 86。每10ms都会调用一次

function dateformat(micro_second) {

// 秒数

var second = math.floor(micro_second / 1000);

// 小时位

var hr = math.floor(second / 3600);

// 分钟位

var min = math.floor((second - hr * 3600) / 60);

// 秒位

var sec = (second - hr * 3600 - min * 60);// equal to => var sec = second % 60;

// 毫秒位,保留2位

var micro_sec = math.floor((micro_second % 1000) / 10);

return hr + ":" + min + ":" + sec + " " + micro_sec;

}

page({

data: {

clock: ''

},

onload: function() {

countdown(this);

}

});

经过如上优化,代码量减少一半,运行效率也高了。

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值