https://github.com/toobug/asyncpool
A library to arrange async tasks with multi threads.
https://github.com/toobug/asyncpool
Last synced: about 1 year ago
JSON representation
A library to arrange async tasks with multi threads.
- Host: GitHub
- URL: https://github.com/toobug/asyncpool
- Owner: TooBug
- Created: 2014-12-26T05:34:55.000Z (over 11 years ago)
- Default Branch: master
- Last Pushed: 2015-02-09T03:28:06.000Z (over 11 years ago)
- Last Synced: 2024-04-29T21:20:47.791Z (about 2 years ago)
- Language: JavaScript
- Size: 141 KB
- Stars: 7
- Watchers: 2
- Forks: 0
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Async Pool
[](https://www.npmjs.com/package/asyncpool)
[](https://www.npmjs.com/package/asyncpool)
## What?
A library to arrange async tasks with multi threads.
For example, you have several numbers in an Array, with each element, you want to request an url and then do something with the result.
## How?
You can just write like this:
```javascript
var arr = [1,2,3,4]; // the array contains 100 elements
var asyncPool = require('../lib/index');
asyncPool(1,arr,function(element,callback){
requestUrl('/xxx?element='+element,function(serverData){
console.log(element,serverData);
callback();
});
},function(){
console.log('all done.');
});
```
Let's make a fake `requestUrl()` method:
```javascript
function requestUrl(url,callback){
setTimeout(function(){
callback(Math.random()); //echo the url
},1000*Math.random());
}
```
Then run this code:
```bash
1 0.20489364583045244
2 0.8399192735087126
3 0.8282372376415879
4 0.1924239993095398
all done.
```
See, all the tasks are run in order.
You can use `asyncPool(n,arr,func,func)` to use the multi thread, which means there would be `n` tasks running at the same time.
## Changelog
### v0.1.1 2015-02-09
- bugfix: when accessing the task array after processing, it's poped and got nothing.
### v0.1.0 2014-12-26
- first release