javascript - 如果 then 处理程序不返回任何内容,链式 Promise 的解析值是多少?

标签 javascript promise es6-promise

如果 then 处理程序没有 return 语句,则生成的链式 promise 在 bluebird 中采用值 undefined。但是我看不到它在 Promises/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。

每个不抛出异常的函数调用(在规范术语中具有“正常完成”)确实有这样的返回值。如果函数执行没有遇到 return 语句,则此值将为 undefined。这在 section 9.2.1 的规范中有明确规定。 .

关于javascript - 如果 then 处理程序不返回任何内容,链式 Promise 的解析值是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35182600/

相关文章:

javascript - Webpack extract-text-plugin 不生成 css 文件

javascript - 组件不显示更新的 redux 状态

javascript - 使用 LiveValidation 滚动到第一个表单错误

javascript - 我的 promise 在我认为应该实现之前就已经实现了

javascript - Promise returns in a chain 的误解

javascript - 无法在谷歌地图中保存多边形

angular - ionic storage get 返回一个 promise "Bearer [object Promise]"如何返回一个值并将其用作授权 token ?

javascript - AngularJS:forEach http 获取数据 - 等待其他方法,直到加载循环中的所有数据

JavaScript/ react : How to detect `await` call and setState accordingly?

javascript - JQuery Promise 在 ComponentDidMount React.JS 上失败