npm

Check out our latest tech talk, "JavaScript Supply Chain Security" presented by VP of Security, Adam Baldwin.Watch it here »

a-task

1.2.1 • Public • Published

A-Task

Easily run tasks from a seperate process with node. Works great for parallel or long running tasks.

Tasks are automatically batched once per tick and distributed round robin style when in parallel mode.

Installation

Npm

npm install a-task

Import

import task from 'a-task' // es-modules
const task = require('a-task') // commonjs

Basic Example

const add = task((a, b) => {
  return a + b
})
 
// Creates a child process to evaluate the above task.
add([1, 2]).then(result => {
  result === 3
})

Async Tasks

Tasks can return promises that run async.

const add = task((a, b) => {
  return Promise.resolve(+ b)
})
 
// Creates a child process to evaluate the above task.
add([1, 2]).then(result => {
  result === 3
})

Concurrency

const inputs = [[1, 2], [3, 4], [5, 6]]
 
const add = task((a, b) => {
  return a + b
}, { concurrency: 2 })
 
// Creates two child processes splits the load round robin style.
Promise
  .all(inputs.map(add))
  .then(results => {
    results === [3, 7, 11]
  })

Initializing

const add = task(() => {
  let x = 1
  // If setup is true then function provided will be invoked on load.
  // The returned function is then used as the task.
  return (a, b) => {
    x++
    return x + a + b
  }
}, { setup: true })
 
// Creates a child process to evaluate the above task.
Promise.resolve()
  .then(() => add([1, 2]))
  .then(result1 => {
    result1 === 4
  })
  .then(() => add([1, 2]))
  .then(result2 => {
    result2 === 5 // x was incremented on the previous run.
  })

Contributions

  • Use npm test to run tests.

Please feel free to create a PR!

install

npm i a-task

Downloadsweekly downloads

31

version

1.2.1

license

MIT

homepage

github.com

repository

Gitgithub

last publish

collaborators

  • avatar
Report a vulnerability