前言:
今天同学们对“js中断执行”都比较关心,姐妹们都想要学习一些“js中断执行”的相关内容。那么小编在网上搜集了一些关于“js中断执行””的相关内容,希望咱们能喜欢,大家一起来了解一下吧!JavaScript 没有sleep()开箱即用的功能。考虑到它运行的环境以及如果使用不当可能导致的问题,这可能是一个好主意。最接近的功能是setTimeout()函数,但还有其他不太常见的方法来实现将暂停执行指定时间量的函数。
设置超时
JavaScriptsetTimeout()设置了一个计时器,一旦计时器到期,它就会执行一些代码。只有setTimeout()回调中的代码会在计时器到期后执行。如果您不小心,这可能会导致嵌套问题以及乱序执行代码。
const printNums = () => { console.log(1); setTimeout(() => console.log(2), 500); console.log(3);};printNums(); // Logs: 1, 3, 2 (2 logs after 500ms)同步版本
虽然强烈不鼓励使用Date.prototype.getTime()方法,但可以在while循环内使用以暂停执行一段时间。您可以像这样轻松定义同步sleep()函数:
const sleepSync = (ms) => { const end = new Date().getTime() + ms; while (new Date().getTime() < end) { /* do nothing */ }}const printNums = () => { console.log(1); sleepSync(500); console.log(2); console.log(3);};printNums(); // Logs: 1, 2, 3 (2 and 3 log after 500ms)异步版本
实现sleep()函数的一种不那么侵入性的方法是利用JavaScript ES6 中添加的async和 await 关键字。请注意,生成的函数必须在函数中执行,并且必须使用以下命令调用:await
const sleep = (ms) => new Promise(resolve => setTimeout(resolve, ms));const printNums = async() => { console.log(1); await sleep(500); console.log(2); console.log(3);};printNums(); // Logs: 1, 2, 3 (2 and 3 log after 500ms)
更多技术内容请访问:
版权声明:
本站文章均来自互联网搜集,如有侵犯您的权益,请联系我们删除,谢谢。