【发布时间】:2018-08-02 05:00:44
【问题描述】:
在下面的代码中,我注意到在调用 getProm() 的那一刻,promise 开始得到解决(我注意到运行代码时延迟了 5 秒)。
我想确认 Promise 是在创建时立即解决还是仅在以下 2 种情况下解决。 1) 只有当我们明确地执行 Promise.resolve 时才会解决 Promise 2) 我们使用 .then 关键字
function getProm(){
var prom1 = new Promise((resolve,reject)=>{
setTimeout(()=>{
resolve("Promise is resolved")
},5000)
})
return prom1
}
var mypromise = getProm()
【问题讨论】:
-
我无法重现你所说的在下面的代码中,我注意到在调用 getProm() 的那一刻,promise 得到了解决。仅在我致电
.then(或替代方案)后,承诺才得以解决 -
你的说法没有意义。当您还“可以注意到 5 秒的延迟”时,您如何注意到“调用 getProm 的那一刻”发生了一些事情。如果延迟 5 秒,则不是调用它的时刻!
-
当您调用
resolve或reject时,Promise 将得到解决。.then()对 Promise 的完成没有影响。 -
如果您的问题是“Promise 函数中的代码无论如何都会运行吗?”,那么答案是“是”。只需将
resolve()替换为console.log()并亲自查看。 -
@Adelin - 真的吗?我认为承诺会在 5000 毫秒后得到解决——不管其他任何事情
标签: javascript node.js promise es6-promise