我是新的(2天!!)JavaScript的世界,我唯一的编码经验是Java语言执行顺序发生。 我明白,或者至少我已经读过JavaScript是异步的,这意味着如果有一个语句需要很长时间才能执行,那么执行下一条语句时不会阻止第一条语句的程序。 我遇到过回调(其实很多!!),但我看不出它们如何被用来确定执行顺序。我写了一段代码只是为了了解它是如何完成的,我当然可以使用一些帮助。如何在涉及异步调用时设置执行的特定顺序?
console.log("Beginning");
function Test(callback){
setTimeout(function(callback){
console.log("Something that takes a lot of time");
},5000);
callback();
}
function tstCallBack(){
console.log("Should come last");
}
Test(tstCallBack);
我要的是输出到显示 -
Beginning
Something that takes a lot of time
Should come last
但我得到的输出 -
Beginning
Should come last
Something that takes a lot of time
有什么我可以做的就是在输出我想要的方式?
“JavaScript是异步的,这意味着如果有一个声明需要很长时间才能完成xecute,下一个语句执行时不会阻止第一个语句的程序。“这是错误的,javascript的异步陈述是真实的,但这不是因为一个函数需要很长时间,线程会自动进一步跳转,这取决于它是否是异步函数。 Btw Java在最近的版本中可以是异步的,但它不太常见。 –
@NexusDuck - 非常感谢你!这是我错过的。也就是说(如果我错了,纠正我),JavaScript具有这些内置功能,这些功能很容易导致/或者导致延迟,并且这些功能是异步的以避免问题;这意味着我们无法自定义制作我们自己的异步函数(不依赖于内置的东西) 我是对的吗? – Savvy
你是对的,看看@ jfriend00的回答,他有一个更详细的版本(重要的一点是,JavaScript具有更异步的本质,因为它是单线程的,而Java可以是多线程的) –