Skip to content

Instantly share code, notes, and snippets.

@sebcode
Created March 17, 2017 18:28

Revisions

  1. sebcode created this gist Mar 17, 2017.
    41 changes: 41 additions & 0 deletions tasks.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,41 @@
    #!/usr/bin/env node

    const async = require('async')

    const numTasks = 10
    const numParallel = 4

    function doTask(i) {
    console.log(`${i} start`)
    return new Promise((resolve, reject) => {
    setTimeout(() => {
    console.log(`${i} end`)
    resolve(i)
    }, 1000)
    })
    }

    async function run() {
    const tasks = [...Array(numTasks).keys()].map(i => {
    return cb => {
    return doTask(i)
    .then(res => cb(null, res))
    .catch(err => cb(err))
    }
    })

    await new Promise((resolve, reject) => {
    async.parallelLimit(tasks, numParallel, (err, result) => {
    if (err != null) {
    reject(err)
    return
    }

    resolve(result)
    })
    })

    console.log('done')
    }

    run()