MaybePromise -> SyncPromise...

Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
Alex A. Naanou 2022-12-04 05:29:37 +03:00
parent 4e5753a228
commit 5d5f6f6a96
3 changed files with 19 additions and 8 deletions

View File

@ -800,9 +800,9 @@ object.Constructor('ProxyPromise', Promise, {
// XXX like promise but if a value can be generated sync then this will
// run in sync otherwise it will fall back to being a promise...
// XXX should we throw errors in sync mode??? ...option???
var MaybePromise =
module.MaybePromise =
object.Constructor('MaybePromise', Promise, {
var SyncPromise =
module.SyncPromise =
object.Constructor('SyncPromise', Promise, {
//value: undefined,
//error: undefined,
@ -857,7 +857,7 @@ object.Mixin('PromiseMixin', 'soft', {
interactive: InteractivePromise,
cooperative: CooperativePromise,
// XXX EXPEREMENTAL...
maybe: MaybePromise,
sync: SyncPromise,
// XXX need error support...
awaitOrRun: function(data, func){
@ -904,6 +904,13 @@ object.Mixin('PromiseProtoMixin', 'soft', {
as: ProxyPromise,
iter: function(handler=undefined){
return IterablePromise(this, handler) },
// XXX revise...
sync: function(){
if(this instanceof SyncPromise){
if('error' in this){
throw this.error }
return this.value }
return this },
})
PromiseProtoMixin(Promise.prototype)

View File

@ -94,7 +94,7 @@ Library of JavaScript type extensions, types and utilities.
- [Promise proxies](#promise-proxies)
- [`<promise>.as(..)`](#promiseas)
- [`<promise-proxy>.<method>(..)`](#promise-proxymethod)
- [Sync/Async promise](#syncasync-promise)
- [Sync/async promise](#syncasync-promise)
- [`Promise.maybe(..)` / `promise.MaybePromice(..)`](#promisemaybe--promisemaybepromice)
- [`<maybe-promise>.value` / `<maybe-promise>.error`](#maybe-promisevalue--maybe-promiseerror)
- [Promise utilities](#promise-utilities)
@ -2007,11 +2007,15 @@ the main `<promise>` is resolved.
### Sync/async promise
#### `Promise.maybe(..)` / `promise.MaybePromice(..)`
#### `Promise.sync(..)` / `promise.SyncPromice(..)`
XXX
#### `<maybe-promise>.value` / `<maybe-promise>.error`
#### `<sync-promise>.value` / `<sync-promise>.error`
XXX
#### `<promise>.sync()`
XXX

View File

@ -1,6 +1,6 @@
{
"name": "ig-types",
"version": "6.23.0",
"version": "6.24.0",
"description": "Generic JavaScript types and type extensions...",
"main": "main.js",
"scripts": {