小编Env*_*Set的帖子

ECMAScript:有关作业和作业队列的一些问题

关于ECMAScript规范的问题(ECMA-262第8版)

这几天,我对Job和Job Queue感到困惑.

这是一些问题.

1:在ECMA-262中,有两种作业队列.一个是ScriptJobs另一个是PromiseJobs.那么,女巫有偏好吗?
2:在ECMA-262中,只有RunJobs抽象操作的定义.我想知道RunJobs执行的时间和地点?
我执行代码打击,在FF 60中.

<!DOCTYPE html>
  <html lang="en">
    <head>
      <meta charset="UTF-8">
      <title>Title</title>
      <script>
        window.addEventListener('DOMContentLoaded', () => {
          let x = document.createElement('script');
          x.innerHTML = 'console.log(3);';
          console.log('script start');
          document.body.appendChild(x);
          setTimeout(() => console.log(1), 0);
          Promise.resolve(2).then(console.log);
          console.log('script is end');
        });
      </script>
    </head>
   <body>
   </body>
  </html>
Run Code Online (Sandbox Code Playgroud)

并记录:

script start
3
script end
2
1
Run Code Online (Sandbox Code Playgroud)

为什么script元素在动态创建的执行上下文上执行?

C.让nextQueue成为以实现定义的方式选择的非空作业队列.如果所有作业队列都为空,则结果是实现定义的.

从ECMA-262 RunJobs分叉.HTML规范如何定义实现定义的方式

@Bergi喜欢这个?PromiseJobs:[],ScriptJobs:[]

ScriptJobs.push(something);   
// pop and run by Event loop   
// blow …
Run Code Online (Sandbox Code Playgroud)

javascript specifications ecmascript-6 ecmascript-2017

2
推荐指数
1
解决办法
163
查看次数