Skip to content

caolan/async

Repository files navigation

Async Logo

Github Actions CI status NPM version Coverage Status Join the chat at https://gitter.im/caolan/async jsDelivr Hits

Async is a utility module which provides straight-forward, powerful functions for working withasynchronous JavaScript.Although originally designed for use withNode.jsand installable vianpm i async,it can also be used directly in the browser. An ESM/MJS version is included in the mainasyncpackage that should automatically be used with compatible bundlers such as Webpack and Rollup.

A pure ESM version of Async is available asasync-es.

For Documentation, visithttps://caolan.github.io/async/

For Async v1.5.x documentation, goHERE

// 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)
})