【问题标题】:Order of execution Javascript [duplicate]Javascript的执行顺序[重复]
【发布时间】:2022-01-30 00:05:56
【问题描述】:

我有这个代码:

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');

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

  • 创建承诺
  • 结束
  • 执行承诺
  • 超时


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

【问题讨论】:

  • promise 函数在大多数实现中被立即调用。没有必要推迟它的执行
  • @DanielA.White,那么我理解new Promise(...) 中的所有内容都是同步执行的吗?
  • 是的 - 标准是这样说的:tc39.es/ecma262/multipage/…

标签: javascript


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-16
    • 2012-11-23
    • 2013-04-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多