La libreria bluebird sembra utilizzare automaticamente Promise::then
sia come un equivalente di "mappa" e "flatMap" sulla promessa, ad esempio vedere questo esempio.Appiattimento promesse in javascript
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)
});
È un contratto dell'iSe Promise API? Per esempio, non vedo alcun riferimento a questo comportamento di schiacciamento here o here.
Uh, quei documenti sono * molto * sparsi. MSDN non menziona nemmeno che 'then' restituisce una promessa: - / – Bergi