为什么Promise在诺言完成之前执行'then'子句?

时间:2018-07-02 16:51:08

标签: javascript promise

在下面的代码中,立即执行'then'子句,它不会等待Promise完成:

function doSomething() { ... }
p = new Promise( ... );
p.then(doSomething()}  

这很好用:

function doSomething() { ... }
p = new Promise( ... );
p.then(() => {doSomething()}}

请有人可以解释为什么两个版本不相等吗?

下面是一些运行代码进行演示:https://jsfiddle.net/damianhelme/8b6pq9mL/18/

2 个答案:

答案 0 :(得分:2)

您正在调用doSomething,并将其结果传递给.then() => {...}创建一个新函数,该函数将由Promise链调用。您也可以进行.then(doSomething),请注意没有括号。

答案 1 :(得分:0)

在第一个示例中,您正在执行该功能。

尝试一下: p.then(doSomething) 这样,您可以传递一个函数,该函数将在promise解决后执行。

请注意没有括号