Javascript promise - 隐式解决(或)拒绝发生

Javascript promise - resolve (or) reject happening implicitly

从 chrome 控制台,我正在使用原生 JS promises 并且它正在自动解决,

var p = new Promise(
  function(resolve, reject){
    resolve(200)
})

返回

undefined

p.then(function(response){
  console.log(response)
})

返回

200

我认为,Promise.then 用于注册解析(或)拒绝回调。但是,为什么在这种情况下它会自己触发解析回调函数。

Here, How & when does the resolve promise trigger happen?

then 回调将在 event loop 的某个未来下一轮执行,如果它是在 promise 解析之前附加的。如果它在解决后附加,它将在下一轮执行,就好像它被包装在 setTimeout(function () {}, 0) 调用中一样。

atleast in my 2 lines of code, i am not resolving it explicitly?

当您调用 resolve 时,是的,您正在解决承诺。

Why is it logging undefined?

因为 var 语句没有有用的 return 值。例如,如果您键入 var x = 5,您的控制台将记录 undefined

Why is it resolving?

因为您调用了 resolve,这就是您在 promise 构造函数中解析 promise 的方式。

var p = new Promise(function(resolve, reject){
    resolve(200)
});

var p = Promise.resolve(200)基本相同。这不仅是明确地解决它——它是解决它的唯一方法。如果你不想解决它,请删除 resolve(200) 行。

But, why is it triggering resolve callback function itself in this case.

不是,如果您 console.log(p) 并删除 then 部分,它将记录已解决的承诺。