javascript - 使用静态值创建已解决的 Promise - 为什么执行仍然是异步的

标签 javascript asynchronous es6-promise

<分区>

Promise.resolve("resolved").then(function(result) { 
  console.log(result)
});
console.log("promise created");

结果:

"promise created"
"resolved"

我的问题是:为什么执行仍然是异步的? Promise 的幕后发生了什么?

如果我将 console.log 包装在 setTimeout 中并延迟 0,那么 promise 解析会在 console.log 之前发生>

最佳答案

Promise.resolve(...) 的初始调用是同步的,但是您在 .then() block 中链接的任何内容都将 总是由于event loop而异步在幕后实现。

您的 console.log("promise created"); 是在您的 promise 链之外调用的,因此会在初始 Promise.resolve(...) 调用后立即执行。

由于您的 console.log("promise created"); 在您的 promise 链之外,一旦初始调用 Promise.resolve(...)发生,执行控制台日志。

关于javascript - 使用静态值创建已解决的 Promise - 为什么执行仍然是异步的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39043695/

相关文章:

javascript - jQuery在2个动态生成的层下触发事件

javascript - 如何处理与 MongoDB 和 node.js 的异步?

c# - Windows Phone 8.1 在异步/等待任务完成之前显示进度 View

JavaScript:使用 Promises 按顺序加载图像时出现奇怪的错误

javascript - 在 JavaScript 的 for-in 循环中使用 typeof

javascript - 如何像这样对对象数组进行分组?并删除重复项?

javascript - 如何使用 MapReduce 和 Aggregate 进行相同的分析

javascript - 我应该在 Javascript 的回调函数中使用 '' return"吗?

node.js - 从异步等待函数中获取 Bluebird Promise

java - 如何在 Node.js Express 应用程序中运行 Java 代码