javascript - 为什么 promise 的记录值令人困惑?

标签 javascript asynchronous promise google-chrome-devtools

这是我正在使用的代码:

let myFirstPromise = new Promise((resolve, reject) => {
  setTimeout(function(){
   // alert("sdf");
    resolve("Success!"); // Yay! Everything went well!
  }, 200);
});

console.log(myFirstPromise);

为什么记录的值显示如下: enter image description here

但是当我打开它时,它显示已解决? enter image description here

另一个案例, 假设我将 200 更改为 2000, 现在

  1. 如果我在 2 秒之前展开,它始终显示待处理,即使您在 2 分钟后再次展开。
  2. 如果我在 2 秒后展开,它会显示已解决,之后也是如此。

为什么会这样?

最佳答案

您看到的第一行是从您返回 promise 时开始的。

此时其状态为pending(因为尚未解决)并且没有解决值。

当您打开它时 - 开发工具会检查实时 promise - 这意味着它显示当前状态。由于您在超过 200 毫秒后按下了它 - 现在它已满足值“成功!”。

关于javascript - 为什么 promise 的记录值令人困惑?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43110190/

相关文章:

javascript - Angular Controller 在工厂完成之前正在执行

javascript - Protractor 和执行顺序

javascript - Node.js 中基于好友的系统

javascript - 如何在复制的文本中(严格)保留 HTML?

javascript - GWT 对象参数从 javascript 到 java(JavaScriptObject 到 JSONObject)

jquery - 异步加载 Google 图表?

Django REST Framework 发出异步请求以响应

javascript - 为什么带有 'await'的这行代码会触发微任务队列处理呢?

javascript - 如何确保 Jest 在 "unhandledRejection"上失败?

javascript - 我如何通过chrome的选择器获取元素?