javascript - Javascript 的执行顺序

标签 javascript

<分区>

我有这个代码:

setTimeout(function timeout() {
    console.log('timeout');
}, 0);

let p = new Promise(function(resolve, reject) {
    console.log('create promise');
    resolve();
});

p.then(function(){
    console.log('execute promise');
});

console.log('end');

我在执行代码时得到这个命令:

  • 创造 promise
  • 结束
  • 履行 promise
  • 超时


问:为什么create promise先执行?我希望先执行 end,因为它是唯一的同步代码,所以应该先执行。

最佳答案

传递给 Promise 构造函数的回调会立即同步执行。但是可以在 Promise 回调中启动一个异步任务。然后 Promiseasynchronous 任务完成后解析。这是 Promises 的主要用例。

在您的情况下,没有启动异步任务,因此您所有的代码都是同步

关于javascript - Javascript 的执行顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70906843/

相关文章:

javascript - 使用 jquery、javascript、wordpress 更改分页数

javascript - jQuery 自动完成返回整个数组而不是搜索值

javascript - 如何捕获事件并区分关闭事件和刷新事件

javascript - 防止 JavaScript 将时间更改为 GMT

javascript - 使用javascript在按钮单击上添加文本框

javascript - 无法发布/graphql

javascript - 如何测试 babel 是否工作以及我的插件是否被执行

Javascript:导出大文本/csv 文件会使 Google Chrome 崩溃

javascript - 如何从嵌套对象的数组中删除元素? (lodash)

javascript - 代码学院 "SyntaxError: Unexpected token else"