Javascript及其单线程
读到javascript只有一个线程来执行其代码,让我们假设相同的ajax调用被一个接一个地调用两次,并且这个ajax调用有一个回调。假设回调如下所示:Javascript及其单线程,javascript,multithreading,Javascript,Multithreading,读到javascript只有一个线程来执行其代码,让我们假设相同的ajax调用被一个接一个地调用两次,并且这个ajax调用有一个回调。假设回调如下所示: function callBackFromJax(){ var number = 2; number = 2+1; number = number +5; console.info(number) } 我认为,如果它为第一个ajax调用执行回调方法,尽管第二个ajax调用已经完成: 它必须等待单个线程结
function callBackFromJax(){
var number = 2;
number = 2+1;
number = number +5;
console.info(number)
}
我认为,如果它为第一个ajax调用执行回调方法,尽管第二个ajax调用已经完成:
谢谢 如果您使用Java进行过GUI编程,它就像Swing线程或JavaFX线程一样。一切都在一个线程中运行。您可以使用
runLater()
将新任务排队以在这些线程上运行,但您不能同时执行两个任务——这种想法根本没有意义
JavaScript也是如此。异步事件存储在队列中,单线程一次处理一个。这有助于理解存在调用堆栈和事件队列。调用堆栈一次处理一件事情,代表JavaScript的单线程特性。事件循环是一种队列,其中放置了asyschronus方法,当它们完成并且调用堆栈为空时,将其移动到调用堆栈进行处理 问题:它必须等待单个线程结束第一个回调方法的执行,对吗?
回答:是的,这是正确的
问题:那么回调方法的代码不可能同时在两个线程中执行。
回答:是的,这也是正确的
问题:这就像在javascript中为方法同步java的功能一样
回答:由于事件循环和调用堆栈,这是不正确的。
请在youtube上查看此视频以获得详细解释