是否可以使用setTimout
获得下面提到的输出.如果是,请分享您的 idea :-
console.log("1st");
setTimeout(()=>{
console.log("2nd");
},0);
console.log("3rd");
**输出应该是**
1st
2nd
3rd
是否可以使用setTimout
获得下面提到的输出.如果是,请分享您的 idea :-
console.log("1st");
setTimeout(()=>{
console.log("2nd");
},0);
console.log("3rd");
**输出应该是**
1st
2nd
3rd
Majed Badawi的回答显示了一种实现您想要的方式,但它只是一种类似于将第三个日志(log)放在第二个之后的setTimeout回调中的构造.
这有重要的概念原因.
JavaScript是一种事件驱动语言,其中有一种称为事件循环的东西,可以判断新事件并不间断地处理它们.
你在这里寻找的是一种使用setTimeout
的方法,就像在PHP、C或其他语言中使用sleep
一样.它根本不存在.
sleep
是一条阻塞指令:程序在继续之前等待X秒.如果在JavaScript中执行此操作,将阻止事件循环运行,甚至不想try 这样做.如果您真的坚持,可以在while
语句中判断是否经过了足够的时间,这将在前端环境中冻结浏览器,或阻止在后端环境中处理新请求.
更多信息请点击这里https://cloudoki.com/js-dont-block-the-event-loop/
相比之下,setTimeout
将向提供的侦听器触发一个事件.一段时间后,程序的其余部分(和事件循环)将继续运行.