为什么记录的承诺值令人困惑?

时间:2017-03-30 06:31:39

标签: 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秒后展开,它会显示已解决,并且在之后也是如此。
  3. 有这样的原因吗?

1 个答案:

答案 0 :(得分:1)

您看到的第一行是您返回承诺的时间。

此时它的状态为pending(因为它未解析)并且没有分辨率值。

当您打开它时 - 开发工具会检查实时承诺 - 这意味着它会显示当前状态。自从你在超过200毫秒后按下它 - 它现在已经实现了价值"成功!"。