11

bluebird 库似乎自动将Promise::then两者用作 promise 上的“map”和“flatMap”的等价物,例如,参见这个例子。

var Promise;

Promise = require('bluebird').Promise;

Promise.resolve(1).then(function(x) {
  return Promise.resolve(x + 1);
}).then(function(x) {
  return console.log(x); // => `2` (not a promise)
});

Promise.resolve(1).then(function(x) {
  return x + 1;
}).then(function(x) {
  return console.log(x); // => `2`
});

Promise.reject('hi').catch(function(x) {
  return Promise.reject('hi2');
}).catch(function(x) {
  return console.error(x); //  => `hi2` (not a promise)
});

这是 es6 Promise API 的合约吗?例如,我在这里这里没有提到这种扁平化行为。

4

1 回答 1

13

这是 es6 Promise API 的合约吗?

是的,它是由Promises/A+建立的合约,并已从那里进入 ES6 规范。您会在此处此处此处找到一些讨论。

于 2015-06-28T20:55:59.150 回答