
Security News
TypeScript is Porting Its Compiler to Go for 10x Faster Builds
TypeScript is porting its compiler to Go, delivering 10x faster builds, lower memory usage, and improved editor performance for a smoother developer experience.
npm install run-auto
Determines the best order for running the functions in tasks
, based on their
requirements. Each function can optionally depend on other functions being completed
first, and each function is run as soon as its requirements are satisfied.
If any of the functions pass an error to their callback, it will not complete (so any
other functions depending on it will not run), and the main callback
is immediately
called with the error. Functions also receive an object containing the results of
functions which have completed so far.
For a complicated series of async tasks, using auto
makes adding new tasks much easier
(and the code more readable).
tasks
- An object. Each of its properties is either a function or an array of
requirements, with the function itself the last item in the array. The object's key of a property serves as the name of the task defined by that property, i.e. can be used when specifying requirements for other tasks. The function receives two arguments:
(1) a callback(err, result)
which must be called when finished, passing an error
(which can be null
) and the result of the function's execution, and (2) a results
object, containing the results of the previously executed functions.callback(err, results)
- An optional callback which is called when all the tasks have
been completed. It receives the err
argument if any tasks pass an error to their
callback. Results are always returned; however, if an error occurs, no further tasks will
be performed, and the results object will only contain partial results.var auto = require('run-auto')
auto({
getData: function (callback) {
console.log('in getData')
// async code to get some data
callback(null, 'data', 'converted to array')
},
makeFolder: function (callback) {
console.log('in makeFolder')
// async code to create a directory to store a file in
// this is run at the same time as getting the data
callback(null, 'folder')
},
writeFile: ['getData', 'makeFolder', function (callback, results) {
console.log('in writeFile', JSON.stringify(results))
// once there is some data and the directory exists,
// write the data to a file in the directory
callback(null, 'filename')
}],
emailLink: ['writeFile', function (callback, results) {
console.log('in emailLink', JSON.stringify(results))
// once the file is written let's email a link to it...
// results.writeFile contains the filename returned by writeFile.
callback(null, { file: results.writeFile, email: 'user@example.com' })
}]
}, function(err, results) {
console.log('err = ', err)
console.log('results = ', results)
})
Note, all functions are called with a results
object as a second argument, so it is
unsafe to pass functions in the tasks
object which cannot handle the extra argument.
For example, this snippet of code:
auto({
readData: async.apply(fs.readFile, 'data.txt', 'utf-8')
}, callback)
will have the effect of calling readFile
with the results object as the last argument,
which will fail, like this:
fs.readFile('data.txt', 'utf-8', cb, {})
Instead, wrap the call to readFile
in a function which does not forward the results
object:
auto({
readData: function (cb, results) {
fs.readFile('data.txt', 'utf-8', cb)
}
}, callback)
This module is basically equavalent to
async.auto
, but it's
handy to just have the one function you need instead of the kitchen sink. Modularity!
Especially handy if you're serving to the browser and need to reduce your javascript
bundle size.
Works great in the browser with browserify!
MIT. Copyright (c) Feross Aboukhadijeh.
Image credit: Wizard Hat designed by Andrew Fortnum
FAQs
Determine the best order for running async functions, and run them
The npm package run-auto receives a total of 2,578 weekly downloads. As such, run-auto popularity was classified as popular.
We found that run-auto demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
TypeScript is porting its compiler to Go, delivering 10x faster builds, lower memory usage, and improved editor performance for a smoother developer experience.
Research
Security News
The Socket Research Team has discovered six new malicious npm packages linked to North Korea’s Lazarus Group, designed to steal credentials and deploy backdoors.
Security News
Socket CEO Feross Aboukhadijeh discusses the open web, open source security, and how Socket tackles software supply chain attacks on The Pair Program podcast.