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,并将使你的敌人;)

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...