Javascript Node.js-常规回调队列顺序

Javascript Node.js-常规回调队列顺序,javascript,node.js,event-loop,Javascript,Node.js,Event Loop,关于这个话题的答案+评论: 我对I/O事件的回调队列顺序有疑问 当事件循环从userX获取request1(db-req)然后由userZ获取request2(db-req)时,来自request2的响应是否可能早于响应1(如图所示)(来自req1和req2的异步任务始终从事件队列按顺序执行,但来自异步任务的响应2比响应1到达得更快,因为req1需要更多时间): 或者他们会依次执行(req1->req2)但是响应1总是首先完成,因为它是第一个进入回调队列的。响应2等待轮到它处理响应1是否比响应

关于这个话题的答案+评论:

我对I/O事件的回调队列顺序有疑问

当事件循环从userX获取request1(db-req)然后由userZ获取request2(db-req)时,来自request2的响应是否可能早于响应1(如图所示)(来自req1和req2的异步任务始终从事件队列按顺序执行,但来自异步任务的响应2比响应1到达得更快,因为req1需要更多时间):


或者他们会依次执行(req1->req2)但是响应1总是首先完成,因为它是第一个进入回调队列的。响应2等待轮到它处理响应1是否比响应2花费更长的时间。

req2当然可以在req1之前完成,只要请求中的某些内容是异步的。如果它们都是完全同步的,则req1将首先返回。

>不,它们不会顺序执行,而是在asyn stuff finishedTasks可能需要不同的时间来完成时执行,从而以不同的顺序向回调队列发送回调。回调队列是先入先出处理的。因此,是的,如果异步操作更快,请求二有可能先返回请求某人的异步操作。