mirror of
https://github.com/flynx/types.js.git
synced 2025-10-28 18:10:08 +00:00
experimenting...
Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
parent
f5fa0c16d2
commit
2b71ceda7a
43
Promise.js
43
Promise.js
@ -34,6 +34,45 @@ var generator = require('./generator')
|
||||
|
||||
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// XXX EXPERIMENTING...
|
||||
|
||||
//
|
||||
// pack(<array>)
|
||||
// pack(<promise>)
|
||||
// -> <packed>
|
||||
// -> <packed>
|
||||
//
|
||||
// <packed> ::=
|
||||
// <packed-array>
|
||||
// | <packed-promise>
|
||||
//
|
||||
// <packed-array> ::=
|
||||
// [
|
||||
// <item>
|
||||
// | <array-of-items>
|
||||
// | <promise-item>
|
||||
// | <promise-array-of-items>,
|
||||
// ...
|
||||
// ]
|
||||
//
|
||||
var pack =
|
||||
module.pack =
|
||||
function(list){
|
||||
}
|
||||
|
||||
var handle =
|
||||
module.handle =
|
||||
function(list, handler, onerror){
|
||||
}
|
||||
|
||||
var unpack =
|
||||
module.unpack =
|
||||
function(list){
|
||||
}
|
||||
|
||||
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// Iterable promise...
|
||||
//
|
||||
@ -198,6 +237,7 @@ object.Constructor('IterablePromise', Promise, {
|
||||
list = list instanceof Array ?
|
||||
list
|
||||
: [list]
|
||||
|
||||
var map = !!this.constructor.STOP ?
|
||||
'smap'
|
||||
: 'map'
|
||||
@ -217,6 +257,7 @@ object.Constructor('IterablePromise', Promise, {
|
||||
EMPTY
|
||||
: e })
|
||||
: res })
|
||||
// XXX this will not expand promise results...
|
||||
.flat()
|
||||
: handler(elem) }
|
||||
return list
|
||||
@ -269,6 +310,7 @@ object.Constructor('IterablePromise', Promise, {
|
||||
e = e.__unpack() }
|
||||
if(e instanceof SyncPromise){
|
||||
e = e.sync() }
|
||||
|
||||
// give up on a sync solution...
|
||||
if(e instanceof Promise){
|
||||
// XXX can we return an IterablePromise???
|
||||
@ -278,6 +320,7 @@ object.Constructor('IterablePromise', Promise, {
|
||||
// XXX do we need to handle EMPTY???
|
||||
return list.flat() })
|
||||
.iter() }
|
||||
|
||||
res.push(e) }
|
||||
return res.flat() },
|
||||
|
||||
|
||||
68
test.js
68
test.js
@ -327,19 +327,21 @@ var cases = test.Cases({
|
||||
[1,2,3,4,5,6],
|
||||
'Promise.seqiter(..) handle order')
|
||||
|
||||
// XXX handler...
|
||||
var async_handler = async function(input, output, handler, msg){
|
||||
|
||||
var test_async_handler = async function(input, output, handler, msg){
|
||||
// sanity check...
|
||||
assert.array(
|
||||
await Promise.iter(input, handler),
|
||||
output,
|
||||
msg)
|
||||
msg+' (sanity check)')
|
||||
assert.array(
|
||||
await Promise.iter(input,
|
||||
function(e){
|
||||
return handler(e) }),
|
||||
return Promise.resolve(handler(e)) }),
|
||||
await Promise.iter(input, handler),
|
||||
msg) }
|
||||
await async_handler(
|
||||
msg) }
|
||||
|
||||
await test_async_handler(
|
||||
[
|
||||
1,
|
||||
[2],
|
||||
@ -347,9 +349,10 @@ var cases = test.Cases({
|
||||
Promise.resolve([4]),
|
||||
],
|
||||
[],
|
||||
function(e){ return [] },
|
||||
'handler returns promise - empty')
|
||||
await async_handler(
|
||||
function(e){
|
||||
return [] },
|
||||
'handler returns promise (empty)')
|
||||
await test_async_handler(
|
||||
[
|
||||
1,
|
||||
[2],
|
||||
@ -357,50 +360,9 @@ var cases = test.Cases({
|
||||
Promise.resolve([4]),
|
||||
],
|
||||
[ 'moo', 'moo', 'moo', 'moo' ],
|
||||
function(e){ return ['moo'] },
|
||||
'handler returns promise - array')
|
||||
|
||||
/*
|
||||
assert.array(
|
||||
await Promise.iter(
|
||||
[
|
||||
1,
|
||||
[2],
|
||||
Promise.resolve(3),
|
||||
Promise.resolve([4]),
|
||||
],
|
||||
e => Promise.resolve([])),
|
||||
//[],
|
||||
await Promise.iter(
|
||||
[
|
||||
1,
|
||||
[2],
|
||||
Promise.resolve(3),
|
||||
Promise.resolve([4]),
|
||||
],
|
||||
e => []),
|
||||
'handler returns promise - empty')
|
||||
assert.array(
|
||||
await Promise.iter(
|
||||
[
|
||||
1,
|
||||
[2],
|
||||
Promise.resolve(3),
|
||||
Promise.resolve([4]),
|
||||
],
|
||||
e => Promise.resolve(['moo'])),
|
||||
// XXX what should this return???
|
||||
//[ 'moo', 'moo', 'moo', 'moo' ],
|
||||
await Promise.iter(
|
||||
[
|
||||
1,
|
||||
[2],
|
||||
Promise.resolve(3),
|
||||
Promise.resolve([4]),
|
||||
],
|
||||
e => ['moo']),
|
||||
'handler returns promise - array')
|
||||
//*/
|
||||
function(e){
|
||||
return ['moo'] },
|
||||
'handler returns promise (array)')
|
||||
},
|
||||
|
||||
// Date.js
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user