Javascript执行顺序与setTimeout()

前端之家收集整理的这篇文章主要介绍了Javascript执行顺序与setTimeout()前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
说我有以下代码
function testA {
   setTimeout('testB()',1000);
   doLong();
}

function testB {
   doSomething();
}

function doLong() {
   //takes a few seconds to do something
}

我执行testA().我已经看到Javascript是单线程的.当达到testB()的超时时,1000毫秒后会发生什么?

我可以想到的一些可能性:

> testB()排队等待doLong()执行,其他任何调用都完成.
> doLong()立即终止,并且testB()被启动.
> doLong()在停止(自动提示用户之后)和testB()启动之前,稍等一段时间才能执行.
> doLong()暂停,testB()被启动.在testB()完成后,doLong()恢复.

什么是正确答案?是否依赖于实现或标准的一部分?

This question是相似但不一样的,据我所知.

任何链接,您可以推荐更好地了解Javascript执行将不胜感激.

谢谢!

*是的,我知道并不是所有的浏览器都遵循标准:(

解决方法

你的第一个猜测是正确的:
testB()排队等待doLong()执行,其他任何调用都已完成.

如果testA需要一秒钟以上才能完成,那么testB就只需要等待.

另外,你应该写setTimeout(testB,1000)而不是setTimeout(‘testB()’,1000).发送一个字符串到setTimeout是,像使用eval,generally considered evil,并将使你的敌人;)

猜你在找的JavaScript相关文章