Javascript 模拟并行行为

Javascript 模拟并行行为,javascript,asynchronous,Javascript,Asynchronous,我试图进一步理解JS。我试图实现一些东西来进行并行函数调用: console.log(0); setTimeout(function () { render('header', 10000000); }, 0); console.log(1); setTimeout(function () { render('content', 10000); }, 0); console.log(2); setTimeout(function () { render('footer', 100); }, 0)

我试图进一步理解JS。我试图实现一些东西来进行并行函数调用:

console.log(0);
setTimeout(function () { render('header', 10000000); }, 0);
console.log(1);
setTimeout(function () { render('content', 10000); }, 0);
console.log(2);
setTimeout(function () { render('footer', 100); }, 0);
console.log(3);

function render (element, iteration) {
  console.log('render', element);

  // Hard work
  for(var i=0 ; i < iteration; i++) {
    Math.cbrt(i);
  }

  console.log('rendered', element);
}
我真的不明白为什么。我不想使用房屋或任何其他图书馆


在这个神奇的背后发生了什么?

JS仍然是单线程的<代码>设置超时不会启动另一个线程。 您可以使用
setTimeout
添加3个回调函数,并告诉每个回调函数从现在开始运行0ms。他们都进入了一个需要运行的队列。然后它们分别在同一线程上运行,因此第一个“render header”函数仍然会阻止下一个回调从要运行的函数队列中退出


也许你可以用它来做这件事,但我自己从来没有用过。

JS仍然是单线程的<代码>设置超时不会启动另一个线程。 您可以使用
setTimeout
添加3个回调函数,并告诉每个回调函数从现在开始运行0ms。他们都进入了一个需要运行的队列。然后它们分别在同一线程上运行,因此第一个“render header”函数仍然会阻止下一个回调从要运行的函数队列中退出


也许你可以用它来做这件事,但我自己从来没有用过。

JavaScript使用一个线程来执行你的代码。如果使用
setTimeout
,则在事件循环准备好处理后,会立即向其添加一个条目。由于您没有指定延迟,因此直接创建条目,但只有在创建条目的初始代码完成后,才会执行该条目。看到这个了吗
页面获取详细信息。

JavaScript使用单个线程来执行代码。如果使用
setTimeout
,则在事件循环准备好处理后,会立即向其添加一个条目。由于您没有指定延迟,因此直接创建条目,但只有在创建条目的初始代码完成后,才会执行该条目。看到这个了吗
Javascript是一种单线程语言。您应该实现类似于线程调度程序的功能来实现所需的功能。您希望通过这种方式实现什么?如果在
setTimeout
调用之后直接放置另一个
console.log
,并观察输出,您可能会更好地理解。JavaScript总是在继续之前执行到完成。这意味着JavaScript不存在数据争用或其他同步问题。JavaScript是一种单线程语言。您应该实现类似于线程调度程序的功能来实现所需的功能。您希望通过这种方式实现什么?如果在
setTimeout
调用之后直接放置另一个
console.log
,并观察输出,您可能会更好地理解。JavaScript总是在继续之前执行到完成。这意味着JavaScript没有数据竞争或其他同步问题。
0
1
2
3
render header
rendered header
render content
rendered content
render footer
rendered footer