Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/381.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_Asynchronous_Parallel Processing - Fatal编程技术网

Javascript 异步执行某个内容是否与将其推到调用堆栈的后面相同?

Javascript 异步执行某个内容是否与将其推到调用堆栈的后面相同?,javascript,multithreading,asynchronous,parallel-processing,Javascript,Multithreading,Asynchronous,Parallel Processing,当无事可做时,检查队列。但只检查队列 当无事可做时 ~Javascript 从我的理解来看,这基本上意味着你在推迟执行。差不多 SomeAsynchronousFunction(); SomeRegularFunction(); SomeOtherRegularFunction(); 这意味着你实际上是在重新安排任务 SomeRegularFunction(); SomeOtherRegularFunction(); SomeAsynchronousFunction(); 这三个功能的主体是

当无事可做时,检查队列。但只检查队列 当无事可做时

~Javascript

从我的理解来看,这基本上意味着你在推迟执行。差不多

SomeAsynchronousFunction();
SomeRegularFunction();
SomeOtherRegularFunction();
这意味着你实际上是在重新安排任务

SomeRegularFunction();
SomeOtherRegularFunction();
SomeAsynchronousFunction();

这三个功能的主体是如何执行的。除此之外,如果您的浏览器/硬件支持并行计算,并且如果某个异步函数的主体不依赖于其他两个函数,那么它将与其他两个函数并行执行。是这样吗?还是我完全糊涂了?

你很接近。但通常异步函数的某些部分是同步的,并且这些部分将立即执行——只有异步函数的完成。例如,它可能执行AJAX调用,因此它首先创建XHR对象,将参数收集到FormData对象中,然后立即调用XHR.send;异步部分是onreadystatechange回调函数的执行,当服务器响应并且事件处理循环无事可做时,就会发生这种情况。所以实际的执行顺序是这样的:

synchronous parts of SomeAsynchronousFunction();
SomeRegularFunction();
SomeOtherRegularFunction();
callback function from SomeAsynchronousFunction();

Javascript在单个线程上运行,是非阻塞的,并使用所谓的事件循环,因此您的函数按原始顺序运行,但异步调用在返回时会向事件循环添加另一条消息,并在处理事件循环中所有其他之前的消息时执行。要了解更多信息,我建议阅读Mozilla开发者网络上的这篇文章,

@Barmar,看起来我的Android应用程序在我回答之前没有刷新你的答案;