同步Javascript示例
我想要一个同步javascript的例子 假设我有三个函数同步Javascript示例,javascript,Javascript,我想要一个同步javascript的例子 假设我有三个函数 fun1(); fun2(); fun3(); 他们都记录了一些数据。但是我希望第二个函数fun2()将脚本暂停5秒钟,然后继续 由于是异步的,所以执行setTimeout不起作用。Javascript是单线程语言,因此默认情况下,所有任务都是同步的。因此,在func2之后将调用func3 但是如果在func2中有任何异步任务,如setTimeout或XHR,则序列将中断 在这种情况下,您有两个选项,即回调和承诺 函数func1()
fun1();
fun2();
fun3();
他们都记录了一些数据。但是我希望第二个函数fun2()将脚本暂停5秒钟,然后继续
由于是异步的,所以执行setTimeout不起作用。Javascript是单线程语言,因此默认情况下,所有任务都是同步的。因此,在
func2
之后将调用func3
但是如果在func2
中有任何异步任务,如setTimeout
或XHR
,则序列将中断
在这种情况下,您有两个选项,即回调
和承诺
函数func1(){
var num=0;
对于(变量i=0;i<1000;i++){
num+=i;
}
log('func1:',num);
}
函数func2(){
var num=0;
对于(变量i=0;i<1000000;i++){
num+=i;
}
log('func2:',num);
}
函数func3(){
var num=0;
对于(变量i=0;i<10000;i++){
num+=i;
}
log('func3:',num);
}
func1();
func2();
func3()代码>Javascript尽力避免阻塞事件循环。因此,编写一个在给定时间内故意阻塞循环的函数是非常不自然的
话虽如此,但只有在您承诺绝不将其用于演示以外的任何用途时,您才能这样做:
function fun1(){
console.log("done in fun1")
return
}
function fun3(){
console.log("done in fun3")
return
}
function fun2(){
var then = new Date().getTime() + 5000;
// wait five seconds the hard way
while(new Date().getTime() < then) {
};
console.log("done in fun2")
return
}
fun1()
fun2()
fun3()
函数fun1(){
console.log(“在fun1中完成”)
返回
}
函数fun3(){
console.log(“在fun3中完成”)
返回
}
函数fun2(){
然后var=newdate().getTime()+5000;
//艰难地等待五秒钟
while(new Date().getTime()
这可能会对您有所帮助:这是异步的。我想要同步的。是的。只是为了演示。@krv为什么要同步呢。即使您可能会完全阻塞浏览器窗口5秒钟,这一方面对用户体验不利,因为用户无法再做任何事情,最糟糕的是,它还可能在浏览器中触发长时间运行的脚本警告,询问用户是否应该停止脚本。相信我,您不希望将所有内容暂停5秒。应该指出的是,while(new Date().getTime()
将导致一个内核的cpu使用率为100%,持续5秒。