этот вопрос о спецификации ECMAScript (8-е издание ECMA-262)
В эти дни меня немного смущает работа и очередь на работу.
Вот некоторыеВопросы.
1: В ECMA-262 существует два вида очереди заданий.один ScriptJobs
другой PromiseJobs
.Итак, ведьма имеет предпочтение?
2: В ECMA-262 есть только определение RunJobs
абстрактной операции.Я хочу знать, когда и где RunJobs
выполняется?
3.Я выполнил удар кода, в 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>
и он записывает:
script start
3
script end
2
1
Почемуscript
элемент выполняется в контексте исключения, который создан динамически?
c.Пусть nextQueue будет непустой очередью заданий, выбранной способом, определяемым реализацией.Если все очереди заданий пусты, результат определяется реализацией.
разветвлено из ECMA-262 RunJobs.Как спецификация HTML определяет определяемый реализацией способ ?
@ Берги, как это?PromiseJobs: [], ScriptJobs: []
ScriptJobs.push(something);
// pop and run by Event loop
// blow will happens while `something` runs
PromiseJobs.push(anotherOne);
ScriptJobs.push(theother);
//end of `something`
//and in here, PromiseJobs will pop?