关于js暂停执行的方法

举报
仙士可 发表于 2023/06/14 16:56:42 2023/06/14
【摘要】 JavaScript是一门单线程但是可处理异步任务的脚本语言,是没有提供sleep等类似的方法的,当有需求需要暂停js脚本时,可以使用以下的方法  单线程分析:http://blog.csdn.net/talking12391239/article/details/21168489一:alert,comfirm弹窗暂停js的alert,confirm弹窗类方法,是可以暂停js脚本执行的例如:...

JavaScript是一门单线程但是可处理异步任务的脚本语言,是没有提供sleep等类似的方法的,当有需求需要暂停js脚本时,可以使用以下的方法  单线程分析:http://blog.csdn.net/talking12391239/article/details/21168489

一:alert,comfirm弹窗暂停

js的alert,confirm弹窗类方法,是可以暂停js脚本执行的

例如:

<script>
console.log(1);
alert(1);
console.log(2);


</script>
复制

这样弹窗,是需要点击确认才会执行下面的语句的

就算是定时器也一样暂停

<script>
var i=0;
setInterval(function(){
	console.log(i);
	i++;
	if(i==5){
		alert(i);
	}
},500)
</script>
复制

所以,如果需要暂停的话,可以使用弹窗法暂停脚本,缺点是会影响用户体验

二:while();方法暂停

while方法可以暂停,但是会影响浏览器性能,并且不好控制

<script>
var i=0;
console.log(new Date());
while(i<5000000000){
	i++;
}
console.log(new Date());
</script>
复制

只要控制下while的判断条件,就可以实现暂停了

三,ajax同步请求方法

此方法需要服务器协作才能实现,本人不建议,因为懒,也懒得测试了,

大概步骤就是:ajax同步请求服务器,带上一个参数time,服务器接收之后,sleep(time),到时间再输出,回到ajax回调函数,在这个时间 内,ajax是停止状态的

最后再补充几句,其实js是不能暂停脚本的,上面的方法,只是抢占当前浏览器线程,相当于该线程的某个语句一直还停留在当前浏览器线程,

如:while,当前还未执行完while循环该方法,所以不能退出该线程

不让切换执行,所以实现了暂停

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。