JavaScripting

The definitive source of the best
JavaScript libraries, frameworks, and plugins.


  • ×

    Async

    Async utilities for node and the browser
    Filed under  › 

    • 🔾93%Overall
    • 25,162
    • 4.6 days
    • 🕩2281
    • 👥24

    Async Logo

    Build Status via Travis CI NPM version Coverage Status Join the chat at https://gitter.im/caolan/async libhive - Open source examples jsDelivr Hits

    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 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 Documentation, visit https://caolan.github.io/async/

    For Async v1.5.x documentation, go HERE

    // 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);
    });
    
    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)
    })
    
    Show All