微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

原文地址:https://www.jb51.cc/js/153330.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐