说说技术那些事之60秒的等待

场景

小伙伴们应该有印象吧,当你注册一个网站的账号时候,他可能会提示你,让你阅读XX协议,然后下方是个按钮,按钮在N秒以后才能点击,恩,用意就是让你花点时间和耐心读一下人家列举的协议。亦或者,当你注册网站用户的时候,点击过“获取验证码”之后,必须等待60秒才能继续点击。

新玩法

那么是不是就只能乖乖的等,就没有别的招了呢,其实不尽然。
这里要小小的提一下,其实一般的倒计时,都是用一个叫做定时器的东东做的。
如果想让这个倒计时走的快一些或者慢一些,是有方法可以做到的。
那么方法是什么呢?就是修改计时器本身。
这里就会牵扯到一个知识点,叫做钩子函数。
举个简单的栗子,比如你是一个小学生,我是一个大学生,我想对你使坏。有天放学,你在路上遇到了我,我告诉你,你爸爸让你在路边打瓶酱油再回家,不管你是用自己私房钱也好,自己借钱也好,反正不打完酱油不准回家。恩,然后你乖乖的去打酱油了,那这个时候,我就可以到你家里,告诉你爸爸,啊,你不好好学习,又出去玩啦。然后等你打完酱油你就回家了,然而我在你打完酱油之前就已经给你爸爸说你坏话啦。
当然,这个例子也不尽然表达出其全部意思,比如,如果我再坏一点,我可能就把你卖给人贩子,然后,这个世界就没你什么事啦。

那么这个是怎么做到的呢?

且听我的栗子,一定是说你要回家的路上我把你堵住了,然后妨碍了你本来要回家这个事情。那么,首先我知道你放学会回家,然后我在通过一些方式,影响你回家这个事情:比如我骗你去打酱油,拖延你回家的时间,然后我就可以干些不可告人的事情;亦或者直接把你卖给人贩子,就没你什么事了;当然也可以在你回家之后,你出门之前,让你请我吃饭。
那么代码里是怎么做到的呢?

//获得原来计时器的引用
var realSetInterval = setInterval;

//将计时器的引用指向你自定义的函数
setInterval = function(callback,timeout){
    var time = 100; //你想设定的倒计时间隔,这里为0.1ms
    
    //在这个函数内调用计时器;并设置间隔时间为你想要的间隔时间
    realSetInterval(callback,time);
}

//测试,10秒钟之后打印 haha
setInterval(function(){console.log('haha')},10000);

//咦,怎么0.1秒之后就打印出来了。

综述

比如上面一段代码,让定时器的倒计时按着你自己设定的倒计时走。
就拿短信验证码倒计时为例,它预计你要60秒后才能享受它的再次发送验证码功能。
那么它设置的就是每过1秒钟,60就减去1。那么你只要让它每过去0.5秒或者更短的时间减1就好啦。
当然,你也可以让定时器不工作,只要删掉realSetInterval(callback,time);这句就好了。
这只是个小小的玩法,至于你怎么玩,完全可以发挥你的想象力,嘿。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,252评论 19 139
  • 引子 多年以后,在回顾当年的案情时,胡凯仍旧无法抹平心中的波动。 “人的一生像一条线段。”胡凯徐徐吐出空中...
    阿折阅读 10,386评论 0 13
  • 1999年9月23日到2014年11月10日,长达十五年的连载,岸本齐史以一个几乎圆满的大结局,给了所有火影读者一...
    喳西阅读 4,714评论 2 14
  • 允许表达-发自内心的轻松 在原生家庭中我是家中的第三个女儿,在那个计划生育已经开始的年代,父母顶着压力带着对男孩的...
    Icesheet阅读 1,364评论 0 0
  • 现在的旅行方式有很多种:我们可以跟着美食家去旅行,吃遍东南西北;我们也可以跟着音乐家畅游维也纳;我们还可以跟着动漫...
    路易十四的悦读吧阅读 2,256评论 0 1

友情链接更多精彩内容