这是我在 JS 中尝试 Promise 时得到的一个有趣的观察结果。考虑这段代码:
Promise.resolve(1).then(2).then(console.log);
这会打印出 1 作为其输出。为什么本机实现的 Promise API 没有抛出异常?当非函数参数被忽略时,“跳过”它有什么好处?我真的很感激你的回答
这篇文章可以在MDN中找到。
这是我在 JS 中尝试 Promise 时得到的一个有趣的观察结果。考虑这段代码:
Promise.resolve(1).then(2).then(console.log);
这会打印出 1 作为其输出。为什么本机实现的 Promise API 没有抛出异常?当非函数参数被忽略时,“跳过”它有什么好处?我真的很感激你的回答
这篇文章可以在MDN中找到。
现代 Promise 的工作方式是由ECMAScript 规范定义的。但 Promise 在被添加为语言的核心部分之前就已经存在了,因此为了向后兼容,它们被设计为与社区构建的 Promise 的行为相匹配。社区使用的规范称为Promises/A+,相关部分如下:
ECMAScript 在其规范中继承了这种行为。该规范更难阅读,但我认为这是PerformPromiseThen的这一部分
至于他们为什么选择这样设计,我不知道。