Javascript及其一个线程

时间:2019-06-02 21:00:45

标签: javascript multithreading

了解到该javascript有一个线程来执行其代码,可以说同一个ajax调用一个接一个地被调用两次,并且此ajax调用有一个回调。可以说回调是这样的:

function callBackFromJax(){
     var number = 2;
     number = 2+1;
     number = number +5;
     console.info(number)
}

我想,如果它为第一个ajax调用执行了回调方法,尽管第二个ajax调用已经完成:

  1. 它必须等待单个线程结束第一个回调方法的执行,对吗?
  2. 然后不可能对两个线程同时执行该回调方法的代码。
  3. 就像在javascript中从Java同步功能一样 方法

谢谢!

2 个答案:

答案 0 :(得分:1)

如果您已经用Java完成GUI编程,那就像是Swing线程或JavaFX线程。一切都在一个线程中运行。您可以使用a将新任务排队等待在这些线程上运行,但是您无法同时执行两个任务-这个想法甚至没有意义。

与JavaScript相同。异步事件存储在队列中,并且单线程一次处理一次。

答案 1 :(得分:1)

这有助于了解其中有一个调用堆栈和一个事件队列。调用堆栈一次处理一件事,并表示JavaScript的单线程性质。事件循环是一种队列,在该队列中放置了asyschronus方法,然后在它们完成时以及在调用栈为空时将其移到调用栈进行处理。

它必须等待单个线程结束第一个回调方法的执行,对吗? : 对,那是正确的。 这样就不可能为两个线程同时执行该回调方法的代码。  是的,多数民众赞成在正确 就像让功能从javascript中的Java同步到方法一样  这不是正确的事件循环和调用堆栈的原因。

请在YouTube上观看此视频https://www.youtube.com/watch?v=8aGhZQkoFbQ,以获取更多互动说明。