Javascript 是否将多个模块视为单独的宏任务?

Javascript 是否将多个模块视为单独的宏任务?,javascript,html,es6-modules,Javascript,Html,Es6 Modules,假设我有两个模块,如下所示: <script type=“module” src="../js/module1.js"></script> <script type=“module” src="../js/module2.js"></script> 它们没有一个是相互输入的 如果module1在module2之前执行,这是否意味着当module1从调用堆栈弹出时,并且在微队列清空并且可能完成某些渲染后,调用

假设我有两个模块,如下所示:

<script type=“module” src="../js/module1.js"></script>
<script type=“module” src="../js/module2.js"></script>
它们没有一个是相互输入的


如果module1在module2之前执行,这是否意味着当module1从调用堆栈弹出时,并且在微队列清空并且可能完成某些渲染后,调用堆栈将为空-可能会允许module2被推到调用堆栈上?基本上,module1和module2是被视为两个单独的宏任务,还是被视为一个大脚本?

是的,它们基本上被视为两个宏任务,尽管它们实际上还不是事件循环的一部分,所以它们不是真正排队的任务

您的脚本元素是没有异步属性的模块脚本,我们属于处理模型的一部分,它将把它添加到中,在处理结束时将被清空。 我们想看的下一点是算法,作为算法的一部分,在上一个脚本的执行结束或脚本准备就绪之间的最后一段时间,它将被调用

从这个算法中,我们可以看出,浏览器最终必须

使用设置。 算法本身就是这样

[……]

所以,这很像是将它们视为两个独立的任务

关于绘制,它实际上可能发生,因为在解析时,当执行这些脚本时,浏览器必须

直到第一个脚本。。。
虽然浏览器确实可以绘制。

是的,它们基本上被视为两个宏任务,尽管它还不是事件循环的一部分,所以它们不是真正排队的任务

您的脚本元素是没有异步属性的模块脚本,我们属于处理模型的一部分,它将把它添加到中,在处理结束时将被清空。 我们想看的下一点是算法,作为算法的一部分,在上一个脚本的执行结束或脚本准备就绪之间的最后一段时间,它将被调用

从这个算法中,我们可以看出,浏览器最终必须

使用设置。 算法本身就是这样

[……]

所以,这很像是将它们视为两个独立的任务

关于绘制,它实际上可能发生,因为在解析时,当执行这些脚本时,浏览器必须

直到第一个脚本。。。
浏览器确实可以进行绘制。

在哪种加载条件下?您是否认为使用异步加载两个独立的模块?一个模块导入另一个模块?感觉似乎没有提出这个问题的细节atm@Mike“Pomax”Kamerman感谢您的评论,包括一些细节。希望是这样的,至少看起来您缺少async属性,而且可能还缺少defer,这将显著改变答案。@Mike'Pomax'Kamermans我的印象是模块有defer属性隐式搜索此站点上的“defer”:True。但您仍然需要异步。在哪种加载条件下?您是否认为使用异步加载两个独立的模块?一个模块导入另一个模块?感觉似乎没有提出这个问题的细节atm@Mike“Pomax”Kamerman感谢您的评论,包括一些细节。希望是这样的,至少看起来您缺少async属性,而且可能还缺少defer,这将显著改变答案。@Mike'Pomax'Kamermans我的印象是模块有defer属性隐式搜索此站点上的“defer”:True。不过你还是想要异步的。谢谢你给我指点规范。很高兴能参考tooThanks给我指点规范。也很高兴能参考