JavaScript中的调用堆栈优先级

JavaScript中的调用堆栈优先级,javascript,settimeout,Javascript,Settimeout,如果“A”进入回调队列,而“B”和“C”仍然必须执行,A是在B之后运行(假设超时完成),还是先运行C 我假设当异步操作结束时,回调将进入队列并在那里等待,直到调用堆栈为空。之后,队列中的第一个回调将移动到调用堆栈。因此,如果调用堆栈中有B和C,并且队列中有一个回调函数在等待,那么A将在B和C之后运行。这里是概念证明 setTimeout(()=>console.log('C'),500); setTimeout(()=>console.log('B'),500); 对于(设i=0;i这是一个队

如果“A”进入回调队列,而“B”和“C”仍然必须执行,A是在B之后运行(假设超时完成),还是先运行C


我假设当异步操作结束时,回调将进入队列并在那里等待,直到调用堆栈为空。之后,队列中的第一个回调将移动到调用堆栈。因此,如果调用堆栈中有B和C,并且队列中有一个回调函数在等待,那么A将在B和C之后运行。

这里是概念证明

setTimeout(()=>console.log('C'),500);
setTimeout(()=>console.log('B'),500);

对于(设i=0;i这是一个队列。这意味着它是FIFO-事件按照它们输入的顺序进行。除非您在微任务和宏任务队列之间切换,否则如果进入队列的任务是
B
->
C
->
a
,那么执行顺序将是
B
->
C
a
,而且,我不是确定标题与问题的关系。你是在问调用堆栈还是事件队列?我是在问两者之间的交互。也许更好的问题是“队列中的事件是否具有返回调用堆栈的优先级,或者尚未传递给它的事件?”这个概念对我来说是新概念,因此我的理解是anding可能不足以问我想要的问题。因此,
函数B(){setTimeout(A,0),C()}
?嗯,不。我会继续阅读。谢谢你的回答。