File tree Expand file tree Collapse file tree 5 files changed +115
-0
lines changed Expand file tree Collapse file tree 5 files changed +115
-0
lines changed Original file line number Diff line number Diff line change
1
+ {
2
+ "node" : true ,
3
+ "strict" : true ,
4
+ "eqnull" : true
5
+ }
Original file line number Diff line number Diff line change @@ -4,3 +4,25 @@ async-settle
4
4
[ ![ build status] ( https://secure.travis-ci.org/phated/async-settle.png )] ( http://travis-ci.org/phated/async-settle )
5
5
6
6
Settle your async functions - when you need to know all your parallel functions are complete (success or failure)
7
+
8
+ ## API
9
+
10
+ ### ` settle(executor, onComplete) ` : Function
11
+
12
+ Takes a function to execute (` executor ` ) and a function to call on completion (` onComplete ` ).
13
+
14
+ ` executer ` is executed in the context of [ ` async-done ` ] ( https://github.com/phated/async-done ) , with all errors and results being settled.
15
+
16
+ ` onComplete ` will be called with a settled value.
17
+
18
+ #### Settled Values
19
+
20
+ Settled values have two properties, ` state ` and ` value ` .
21
+
22
+ ` state ` has two possible options ` 'error' ` and ` 'success' ` .
23
+
24
+ ` value ` will be the value passed to original callback.
25
+
26
+ ## License
27
+
28
+ MIT
Original file line number Diff line number Diff line change
1
+ 'use strict' ;
2
+
3
+ var asyncDone = require ( 'async-done' ) ;
4
+
5
+ function settle ( fn , done ) {
6
+ asyncDone ( fn , function ( error , result ) {
7
+ var settled = { } ;
8
+
9
+ if ( error != null ) {
10
+ settled . state = 'error' ;
11
+ settled . value = error ;
12
+ } else {
13
+ settled . state = 'success' ;
14
+ settled . value = result ;
15
+ }
16
+
17
+ done ( undefined , settled ) ;
18
+ } ) ;
19
+ }
20
+
21
+ module . exports = settle ;
Original file line number Diff line number Diff line change
1
+ {
2
+ "name" : " async-settle" ,
3
+ "version" : " 0.0.0" ,
4
+ "description" : " Settle your async functions - when you need to know all your parallel functions are complete (success or failure)" ,
5
+ "main" : " index.js" ,
6
+ "directories" : {
7
+ "test" : " test"
8
+ },
9
+ "scripts" : {
10
+ "test" : " tap ./test"
11
+ },
12
+ "repository" : {
13
+ "type" : " git" ,
14
+ "url" : " git://github.com/phated/async-settle"
15
+ },
16
+ "keywords" : [
17
+ " settle" ,
18
+ " async" ,
19
+ " async-done" ,
20
+ " complete" ,
21
+ " error" ,
22
+ " parallel"
23
+ ],
24
+ "author" : " Blaine Bublitz <blaine@iceddev.com> (http://iceddev.com/)" ,
25
+ "license" : " MIT" ,
26
+ "bugs" : {
27
+ "url" : " https://github.com/phated/async-settle/issues"
28
+ },
29
+ "homepage" : " https://github.com/phated/async-settle" ,
30
+ "devDependencies" : {
31
+ "tap" : " ^0.4.8"
32
+ },
33
+ "dependencies" : {
34
+ "async-done" : " ^0.2.0"
35
+ }
36
+ }
Original file line number Diff line number Diff line change
1
+ 'use strict' ;
2
+
3
+ var test = require ( 'tap' ) . test ;
4
+
5
+ var settle = require ( '../' ) ;
6
+
7
+ test ( 'should transform success into settled success values' , function ( t ) {
8
+ var val = 'value to be settled' ;
9
+ settle ( function ( done ) {
10
+ done ( null , val ) ;
11
+ } , function ( error , result ) {
12
+ t . notOk ( error , 'error should be undefined' ) ;
13
+ t . ok ( result , 'result should be defined' ) ;
14
+ t . ok ( result . state === 'success' , 'state should be "success"' ) ;
15
+ t . equal ( result . value , val , 'value should be the success value' ) ;
16
+ t . end ( ) ;
17
+ } ) ;
18
+ } ) ;
19
+
20
+ test ( 'should transform errors into settled success values' , function ( t ) {
21
+ var err = new Error ( 'Error to be settled' ) ;
22
+ settle ( function ( done ) {
23
+ done ( err ) ;
24
+ } , function ( error , result ) {
25
+ t . notOk ( error , 'error should be undefined' ) ;
26
+ t . ok ( result , 'result should be defined' ) ;
27
+ t . ok ( result . state === 'error' , 'state should be "error"' ) ;
28
+ t . equal ( result . value , err , 'value should be the error value' ) ;
29
+ t . end ( ) ;
30
+ } ) ;
31
+ } ) ;
You can’t perform that action at this time.
0 commit comments