2015-06-28 7 views
9

Die Bluebird-Bibliothek scheint automatisch Promise::then beide als ein Äquivalent von "map" und "flatMap" auf das Versprechen, z. B. siehe dieses Beispiel.Verflachung verspricht 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) 
}); 

Ist dies ein Vertrag der es6 Promise API? Ich sehe keine Erwähnung dieses Abflachungsverhaltens, beispielsweise here oder here.

+0

Uh, diese Dokumente sind * sehr * spärlich. MSDN erwähnt nicht einmal, dass "dann" ein Versprechen zurückgibt: - / – Bergi

Antwort

12

Ist dies ein Vertrag der es6 Promise API?

Ja, es ist ein Vertrag von Promises/A+, und hat seinen Weg von dort in die ES6-Spezifikation gemacht. Sie finden einige Diskussionen here, here und here.