【发布时间】:2016-01-23 07:14:44
【问题描述】:
在es6 specification 中指出,将不可调用传递给promise then 会将promise “已完成”处理程序设置为“身份”。在规范的another section 中,声明“身份”是一个计算给定值的函数。根据什么规范说我假设这个代码:
Promise.resolve("foo").then(Promise.resolve("bar")).then(v => console.log(v))
等于这个代码:
Promise.resolve("foo").then(v => Promise.resolve("bar")).then(v => console.log(v))
但是如果两个代码示例都在最新的 Chrome 或 Firefox 中执行,第一个输出“foo”,第二个输出“bar”。我在哪里误解了规范?
【问题讨论】:
-
您混淆了将承诺传递给
then(您的第一个示例)与传递返回承诺的函数(您的第二个示例)。第一个根据规范什么都不做,因为then忽略所有非函数参数。
标签: javascript promise ecmascript-6 es6-promise