2015-06-28 18 views
9

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.

+0

Uh, quei documenti sono * molto * sparsi. MSDN non menziona nemmeno che 'then' restituisce una promessa: - / – Bergi

risposta

12

È un contratto dell'iSe Promise API?

Sì, è un contratto stabilito da Promises/A+ e si è fatto strada da lì nella specifica ES6. Troverete alcune discussioni here, here e here.

Problemi correlati