如果 then 处理程序不返回任何内容,则链式 Promise 的解析值是多少
What is the resolution value of a chained Promise if a then handler doesn't return anything?
如果then
处理程序没有return
语句,则生成的链式承诺将采用 bluebird 中undefined
的值。 但是我在任何地方都看不到承诺/A+ 或任何地方指定了它? 这种行为可以指望吗?
这是一个测试程序:
var Promise = require('bluebird');
var p = Promise.resolve('test');
p.then(function(s) {
console.log('s1='+s);
// no return
}).then(function(s) {
// bluebird prints "undefined". is this specified by a standard?
console.log('s2='+s);
});
Promises/A+ 指定使用回调的返回值来解析 Promise。
每个不throw
异常的函数调用(在规范术语中具有"正常完成")确实具有这样的返回值。如果函数执行未遇到 return
语句,则此值将undefined
。这在第 9.2.1 节的规范中明确说明。
这是预期的行为,即使您不使用蓝鸟也会发生。如果未使用值显式解析,则该值是未定义的,这在 JS 中很常见。
请参阅此链接到"你不知道JS"一书。它很好地解释了它。
相关文章:
- 使用promise和mongoose对文档进行排序
- 测试Angular Service解决错误回调中的promise
- 如何通过溢出来判断元素被切断了多少像素:隐藏在父级上
- 节点协同与生成器和Promise并行流量控制
- 根据是否解析了 Promise 从函数返回值
- 将一个方法转换为promise:Nodejs
- 函数在promise被解析后被调用,但Jasmine未通过测试.为什么?
- js promise没有正确关闭
- Angularjs使用“;这个“;promise内的关键字回调
- AngularJS和promise值在调用本地函数时的效果-未定义
- 在ES6 Promise中,我应该在解决/拒绝之前使用return吗
- 以同步方式获取Javascript Promise的值
- NodeJS和pg promise,捕获PostgreSQL异常
- AngularJS使用http进行promise处理
- Angular promise return"未定义的“;值.NET MVC
- 计算输入中有多少逗号分隔的字符串
- Promise函数在.then之后未运行函数化
- 如何为javascript promise进行阻塞并返回解析结果
- 将其中一个异步方法重写为使用promise的方法
- 如果 then 处理程序不返回任何内容,则链式 Promise 的解析值是多少