扁平化 javascript 中的 Promise
Posted
技术标签:
【中文标题】扁平化 javascript 中的 Promise【英文标题】:Flattening promises in javascript 【发布时间】:2015-09-15 05:32:19 【问题描述】: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 的合约吗?例如,我没有看到提到这种扁平化行为 here 或 here。
【问题讨论】:
呃,那些文档非常稀疏。 MSDN 甚至没有提到then
返回一个承诺:-/
【参考方案1】:
这是 es6 Promise API 的合约吗?
是的,它是由Promises/A+ 建立的合约,并已从那里进入 ES6 规范。你会发现一些讨论here、here 和here。
【讨论】:
以上是关于扁平化 javascript 中的 Promise的主要内容,如果未能解决你的问题,请参考以下文章
进阶学习7:JavaScript异步编程——Generator异步方案Async/ Await