Async is a utility module which provides straight-forward, powerful functions for working with asynchronous JavaScript. Although originally designed for use with Node.js 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 instead.
// for use with Node-style callbacks...
varasync=require("async");varobj={dev:"/dev.json",test:"/test.json",prod:"/prod.json"};varconfigs={};async.forEachOf(obj,(value,key,callback)=>{fs.readFile(__dirname+value,"utf8",(err,data)=>{if(err)returncallback(err);try{configs[key]=JSON.parse(data);}catch(e){returncallback(e);}callback();});},err=>{if(err)console.error(err.message);// configs is now a map of JSON data
doSomethingWith(configs);});
varasync=require("async");// ...or ES2017 async functions
async.mapLimit(urls,5,asyncfunction(url){constresponse=awaitfetch(url)returnresponse.body},(err,results)=>{if(err)throwerr// results is now an array of the response bodies
console.log(results)})