diff --git a/Promise.js b/Promise.js index 9970691..e1fa695 100644 --- a/Promise.js +++ b/Promise.js @@ -294,6 +294,8 @@ object.Constructor('IterablePromise', Promise, { .then(function(){ return res }) }, + // XXX .chain(..) -- see generator.chain(..) + flat: function(depth=1){ return this.constructor(this, function(e){ diff --git a/README.md b/README.md index aef5637..f684455 100644 --- a/README.md +++ b/README.md @@ -124,6 +124,13 @@ Library of JavaScript type extensions, types and utilities. - [Generator helpers](#generator-helpers) - [`generator.stoppable(..)`](#generatorstoppable) - [Async generator extensions](#async-generator-extensions) + - [`.then(..)` / `.catch(..)` / `.finally(..)`](#async-generatorthen--async-generatorcatch--async-generatorfinally) + - [`.iter(..)`](#async-generatoriter) + - [`.map(..)` / `.filter(..)` / `.reduce(..)`](#async-generatormap--async-generatorfilter--async-generatorreduce) + - [`.chain(..)`](#async-generatorchain) + - [`.flat(..)`](#async-generatorflat) + - [`.concat(..)`](#async-generatorconcat) + - [`.push(..)` / `.unshift(..)`](#async-generatorpush--async-generatorunshift) - [Containers](#containers) - [`containers.UniqueKeyMap()` (`Map`)](#containersuniquekeymap-map) - [`.set(..)`](#unique-key-mapset) @@ -2486,6 +2493,20 @@ stoppable() XXX EXPERIMENTAL +#### `.then(..)` / `.catch(..)` / `.finally(..)` + +#### `.iter(..)` + +#### `.map(..)` / `.filter(..)` / `.reduce(..)` + +#### `.chain(..)` + +#### `.flat(..)` + +#### `.concat(..)` + +#### `.push(..)` / `.unshift(..)` + ## Containers diff --git a/generator.js b/generator.js index f91f25b..01a06bd 100644 --- a/generator.js +++ b/generator.js @@ -484,11 +484,14 @@ object.Mixin('AsyncGeneratorProtoMixin', 'soft', { for await(var elem of that){ res.push(elem) } _resolve(res) }) - resolve - && p.then(resolve) - reject - && p.catch(reject) + p = (resolve || reject) ? + p.then(...arguments) + : p return p }, + catch: function(func){ + return this.then().catch(func) }, + finally: function(){ + return this.then().finally(func) }, // XXX might be a good idea to use this approach above... iter: stoppable(async function*(handler=undefined){ @@ -537,7 +540,6 @@ object.Mixin('AsyncGeneratorProtoMixin', 'soft', { // XXX // slice - // chain // ... })