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

javascript回调函数执行哪个线程?

javascript回调函数执行哪个线程?,javascript,Javascript,最近我读了一些关于javascript的aync I/O,但我对javascript在哪里执行其aync回调感到更加困惑?主线还是其他?节点和浏览器有什么不同吗?当响应返回时,会在主线程上执行异步调用处理程序 如果从webworker执行,异步调用处理程序将在webworker线程中处理 从上到下大致遵循此设置 parent thread | async start | - - - - - - > IO thread |

最近我读了一些关于javascript的aync I/O,但我对javascript在哪里执行其aync回调感到更加困惑?主线还是其他?节点和浏览器有什么不同吗?

当响应返回时,会在主线程上执行异步调用处理程序

如果从webworker执行,异步调用处理程序将在webworker线程中处理

从上到下大致遵循此设置

parent thread
   |    
 async start 
   |
   - - - - - - > IO thread
   |                 |
 other stuff      make call
   |                 | 
 more stuff       get response
   |                 |
   | <--queue handling
   V
 handle async 
 response 
父线程
|    
异步启动
|
-->IO线程
|                 |
其他东西打电话
|                 | 
更多的东西得到回应
|                 |

|回调在主线程中执行,但异步操作在其自己的线程中执行,具体取决于操作。事件和计时器队列在主线程中更新,但例如AJAX调用有自己的线程。这也可能因实现的不同而有所不同。