Javascript 为什么承诺会执行';然后';承诺完成前的条款?

Javascript 为什么承诺会执行';然后';承诺完成前的条款?,javascript,promise,Javascript,Promise,在以下代码中,“then”子句直接执行,它不会等待承诺完成: function doSomething() { ... } p = new Promise( ... ); p.then(doSomething()} 鉴于此方法效果良好: function doSomething() { ... } p = new Promise( ... ); p.then(() => {doSomething()}} 有人能解释一下为什么这两个版本不相等吗 下面是一些正在运行的代码来演示它:您正

在以下代码中,“then”子句直接执行,它不会等待承诺完成:

function doSomething() { ... }
p = new Promise( ... );
p.then(doSomething()}  
鉴于此方法效果良好:

function doSomething() { ... }
p = new Promise( ... );
p.then(() => {doSomething()}}
有人能解释一下为什么这两个版本不相等吗


下面是一些正在运行的代码来演示它:

您正在调用
doSomething
并将其结果传递给
。然后
()=>{…}
创建一个新函数,该函数将由承诺链调用。您也可以执行
。然后(doSomething)
,注意不要使用parens。

在第一个示例中,您正在执行函数

试试这个: p、 然后(doSomething) 通过这种方式,您可以传递一个函数,该函数将在promise解析后执行


请注意,没有括号

,则
希望函数引用而不是调用的函数(除非调用的函数返回函数引用)。谢谢。当人们投票否决这个问题时,我很想听听他们的意见。我现在知道这是一个愚蠢的错误,但我猜我不是第一个或最后一个犯这个错误的人!谢谢-男生的错误!“羞愧地垂着头”的表情符号在哪里?谢谢,我给了丹尼尔“正确答案”,因为他先写了。是的,没问题