【发布时间】:2017-06-24 23:41:44
【问题描述】:
我有以下几点:
new Promise(resolve => setTimeout(resolve, 2000))
.then(() => console.log("after 2 seconds"));
new Promise(resolve => setTimeout(resolve, 3000))
.then(console.log("before 3 seconds (instantly)"));
产生以下输出:
> node index.js
before 3 seconds (instantly)
after 2 seconds
Promise.then() 需要一个onFulfilled 函数,但我传入了console.log("before 2 seconds (instantly)"),它不是一个函数。两部分问题:
- 为什么
console.log("before 2 seconds (instantly)")会立即(或根本)被执行? - 为什么我没有传入函数时第二个 Promise 没有引发异常?
【问题讨论】:
-
"为什么 console.log("before 2 seconds (instantly)") 会立即(或根本)执行?为什么不会立即执行?在将表达式的结果作为参数传递之前,需要对其进行评估。在这种情况下,评估
console.log("before 3 seconds (instantly)")会导致将内容记录到控制台,然后将undefined结果用作调用Promise#then的参数。 -
my answer below 回答您的问题了吗?有没有cmets?
标签: javascript node.js promise