You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					57 lines
				
				2.5 KiB
			
		
		
			
		
	
	
					57 lines
				
				2.5 KiB
			| 
								 
											3 years ago
										 
									 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								[](https://travis-ci.org/caolan/async)
							 | 
						||
| 
								 | 
							
								[](https://www.npmjs.com/package/async)
							 | 
						||
| 
								 | 
							
								[](https://coveralls.io/r/caolan/async?branch=master)
							 | 
						||
| 
								 | 
							
								[](https://gitter.im/caolan/async?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
							 | 
						||
| 
								 | 
							
								[](https://www.libhive.com/providers/npm/packages/async)
							 | 
						||
| 
								 | 
							
								[](https://www.jsdelivr.com/package/npm/async)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Async is a utility module which provides straight-forward, powerful functions for working with [asynchronous JavaScript](http://caolan.github.io/async/global.html). Although originally designed for use with [Node.js](https://nodejs.org/) and installable via `npm install --save async`, it can also be used directly in the browser.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								This version of the package is optimized for the Node.js environment. If you use Async with webpack, install [`async-es`](https://www.npmjs.com/package/async-es) instead.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								For Documentation, visit <https://caolan.github.io/async/>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								*For Async v1.5.x documentation, go [HERE](https://github.com/caolan/async/blob/v1.5.2/README.md)*
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								```javascript
							 | 
						||
| 
								 | 
							
								// for use with Node-style callbacks...
							 | 
						||
| 
								 | 
							
								var async = require("async");
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var obj = {dev: "/dev.json", test: "/test.json", prod: "/prod.json"};
							 | 
						||
| 
								 | 
							
								var configs = {};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								async.forEachOf(obj, (value, key, callback) => {
							 | 
						||
| 
								 | 
							
								    fs.readFile(__dirname + value, "utf8", (err, data) => {
							 | 
						||
| 
								 | 
							
								        if (err) return callback(err);
							 | 
						||
| 
								 | 
							
								        try {
							 | 
						||
| 
								 | 
							
								            configs[key] = JSON.parse(data);
							 | 
						||
| 
								 | 
							
								        } catch (e) {
							 | 
						||
| 
								 | 
							
								            return callback(e);
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								        callback();
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								}, err => {
							 | 
						||
| 
								 | 
							
								    if (err) console.error(err.message);
							 | 
						||
| 
								 | 
							
								    // configs is now a map of JSON data
							 | 
						||
| 
								 | 
							
								    doSomethingWith(configs);
							 | 
						||
| 
								 | 
							
								});
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								```javascript
							 | 
						||
| 
								 | 
							
								var async = require("async");
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// ...or ES2017 async functions
							 | 
						||
| 
								 | 
							
								async.mapLimit(urls, 5, async function(url) {
							 | 
						||
| 
								 | 
							
								    const response = await fetch(url)
							 | 
						||
| 
								 | 
							
								    return response.body
							 | 
						||
| 
								 | 
							
								}, (err, results) => {
							 | 
						||
| 
								 | 
							
								    if (err) throw err
							 | 
						||
| 
								 | 
							
								    // results is now an array of the response bodies
							 | 
						||
| 
								 | 
							
								    console.log(results)
							 | 
						||
| 
								 | 
							
								})
							 | 
						||
| 
								 | 
							
								```
							 |