8000 New: First implementation · gulpjs/async-settle@7c90a7c · GitHub
[go: up one dir, main page]

Skip to content

Commit 7c90a7c

Browse files
committed
New: First implementation
1 parent 314efb6 commit 7c90a7c

File tree

5 files changed

+115
-0
lines changed

5 files changed

+115
-0
lines changed

.jshintrc

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
{
2+
"node": true,
3+
"strict": true,
4+
"eqnull": true
5+
}

README.md

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,25 @@ async-settle
44
[![build status](https://secure.travis-ci.org/phated/async-settle.png)](http://travis-ci.org/phated/async-settle)
55

66
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

index.js

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
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;

package.json

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
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+
}

test/index.js

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
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+
});

0 commit comments

Comments
 (0)
0