JavaScript支持多线程吗?如果没有,我应该如何实现sleep()?

时间:2010-02-11 01:59:50

标签: javascript multithreading

  

可能重复:
  Sleep in Javascript
  Is there some way to introduce a delay in javascript?
  how to make a sleep in javascript?

似乎没有提供sleep()函数,我们可以制作一个吗?

2 个答案:

答案 0 :(得分:4)

JavaScript没有指定任何与线程相关的功能,当它嵌入到Web浏览器中时,它不支持线程(尽管HTML5工作者有点像线程。)

建议不要在浏览器中阻止主线程,因为该页面似乎没有响应用户输入。

如果您只想延迟执行其余程序,请使用setTimeout。如果你有这个功能:

function f() {
   // do some stuff
   sleep(1000);
   // more stuff
}

将其分为两部分。第二部分继续setTimeout

function f() {
  // do some stuff
  setTimeout(g, 1000);
}

function g() {
  // more stuff
}

唯一需要注意的是,如果您将事件处理程序连接起来,如果用户在fg运行时间之间与页面进行交互,则可能会触发它们。

答案 1 :(得分:0)

Javascript是同步的,除了chrome之外,所有浏览器都有一个执行线程我相信。简而言之,没有,它不支持多线程。您可以使用setTimeout生成sleep()类似的功能。例如,这将每5秒脉冲一次,你可以调用另一个函数继续等等。

function test() {
   alert("interval");
   setTimeout(test, 5000);
}