前两天有一个朋友问我如何使用JavaScript实现闹钟,本以为很简单,有现成的函数可以使用,但是发现现成的闹钟函数setTimeout()仅仅提供一次定时能力,而朋友需要多次的重复定时。这种需求其实在现实生活中非常的常见,具有广泛的需求。无奈之下,只能自己动手写一个简单的闹钟啦。
简单闹钟实现程序如下:
从代码中我们可以看出:
1)start_timer()和stop_timer()是timer两个r的控制函数。timeout参数主要用于如何设置超时间隔,已微妙(milliseconds)为单位。
2)do_timeout()函数主要是通知定时时间已到,并设置下一轮定时时间。
3)do_alarm()是用户需要执行的代码。在代码中,我们演示了一个定时计数的小小功能一边用户有一个直观的观察。
它的一个主要缺点是无法支持多个闹钟。在实际应用中,它的局限性非常的大,因为复杂的应用对于支持多闹钟是非常常见的运用。如何才能实现呢?
1)需要对start_timer和stop_timer进行改动,提供返回不同timer的标识。根据这种标识,应用能够动态的控制闹钟的开始和停止。
2)需要提供timer列表,维护不同的timer。
因为上述代码框架已经比较好的考虑到这点,相信喜欢专研的网友一定能够比较容易的实现多闹钟的情况。在多闹钟的实现中,需要注意的是如何维护timer列表的一致性,比如在alarm的时候如何克服用户删除操作的影响,如何保证同步等等。
【小结】
- JavaScript提供了简单的闹钟函数setTimeout(),但是它具有局限性(只能定时一次)。
- 本篇文章中提供方案仅仅是一个简单的闹钟,对于复杂需求也是无能为力的,之所以没有提供一个完备的闹钟实现,主要是已经满足朋友的需求,而无动力再次去完善啦:-)。
- 如果有现成的强大JavaScript库的话,请最好使用它,毕竟自己写代码需要太多的时间和精力,又往往缺乏严格的测试,在关键的时候以最残酷的手段呈现在程序员面前。