Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript及其单线程_Javascript_Multithreading - Fatal编程技术网

Javascript及其单线程

Javascript及其单线程,javascript,multithreading,Javascript,Multithreading,读到javascript只有一个线程来执行其代码,让我们假设相同的ajax调用被一个接一个地调用两次,并且这个ajax调用有一个回调。假设回调如下所示: function callBackFromJax(){ var number = 2; number = 2+1; number = number +5; console.info(number) } 我认为,如果它为第一个ajax调用执行回调方法,尽管第二个ajax调用已经完成: 它必须等待单个线程结

读到javascript只有一个线程来执行其代码,让我们假设相同的ajax调用被一个接一个地调用两次,并且这个ajax调用有一个回调。假设回调如下所示:

function callBackFromJax(){
     var number = 2;
     number = 2+1;
     number = number +5;
     console.info(number)
}
我认为,如果它为第一个ajax调用执行回调方法,尽管第二个ajax调用已经完成:

  • 它必须等待单个线程结束第一个回调方法的执行,对吗
  • 因此,回调方法的代码不可能同时在两个线程中执行
  • 这就像在javascript中从java同步功能一样 方法

  • 谢谢

    如果您使用Java进行过GUI编程,它就像Swing线程或JavaFX线程一样。一切都在一个线程中运行。您可以使用
    runLater()
    将新任务排队以在这些线程上运行,但您不能同时执行两个任务——这种想法根本没有意义


    JavaScript也是如此。异步事件存储在队列中,单线程一次处理一个。

    这有助于理解存在调用堆栈和事件队列。调用堆栈一次处理一件事情,代表JavaScript的单线程特性。事件循环是一种队列,其中放置了asyschronus方法,当它们完成并且调用堆栈为空时,将其移动到调用堆栈进行处理

    问题:它必须等待单个线程结束第一个回调方法的执行,对吗?
    回答:是的,这是正确的
    问题:那么回调方法的代码不可能同时在两个线程中执行。
    回答:是的,这也是正确的
    问题:这就像在javascript中为方法同步java的功能一样
    回答:由于事件循环和调用堆栈,这是不正确的。

    请在youtube上查看此视频以获得详细解释