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
部分,它将记录已解决的承诺。
从 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
部分,它将记录已解决的承诺。