{"maintainers":[{"name":"sboudrias","email":"admin@simonboudrias.com"}],"keywords":["flow","flow-control","async"],"dist-tags":{"latest":"2.3.0"},"author":{"name":"Simon Boudrias","email":"admin@simonboudrias.com"},"description":"Utility method to run function either synchronously or asynchronously using the common `this.async()` style.","readme":"Run Async\n=========\n\n[![npm](https://badge.fury.io/js/run-async.svg)](http://badge.fury.io/js/run-async) [![tests](https://travis-ci.org/SBoudrias/run-async.svg?branch=master)](http://travis-ci.org/SBoudrias/run-async) [![dependencies](https://david-dm.org/SBoudrias/run-async.svg?theme=shields.io)](https://david-dm.org/SBoudrias/run-async)\n\nUtility method to run a function either synchronously or asynchronously using a series of common patterns. This is useful for library author accepting sync or async functions as parameter. `runAsync` will always run them as an async method, and normalize the multiple signature.\n\nInstallation\n=========\n\n```bash\nnpm install --save run-async\n```\n\nUsage\n=========\n\nHere's a simple example print the function results and three options a user can provide a function.\n\n```js\nvar runAsync = require('run-async');\n\nvar printAfter = function (func) {\n  var cb = function (err, returnValue) {\n    console.log(returnValue);\n  };\n  runAsync(func, cb)(/* arguments for func */);\n};\n```\n\n#### Using `this.async`\n```js\nprintAfter(function () {\n  var done = this.async();\n\n  setTimeout(function () {\n    done(null, 'done running with callback');\n  }, 10);\n});\n```\n\n#### Returning a promise\n```js\nprintAfter(function () {\n  return new Promise(function (resolve, reject) {\n    resolve('done running with promises');\n  });\n});\n```\n\n#### Synchronous function\n```js\nprintAfter(function () {\n  return 'done running sync function';\n});\n```\n\n### runAsync.cb\n\n`runAsync.cb` supports all the function types that `runAsync` does and additionally a traditional **callback as the last argument** signature:\n\n```js\nvar runAsync = require('run-async');\n\n// IMPORTANT: The wrapped function must have a fixed number of parameters.\nrunAsync.cb(function(a, b, cb) {\n  cb(null, a + b);\n}, function(err, result) {\n  console.log(result)\n})(1, 2)\n```\n\nIf your version of node support Promises natively (node >= 0.12), `runAsync` will return a promise. Example: `runAsync(func)(arg1, arg2).then(cb)`\n\nLicence\n========\n\nCopyright (c) 2014 Simon Boudrias (twitter: @vaxilart)  \nLicensed under the MIT license.\n","repository":{"type":"git","url":"git+https://github.com/sboudrias/run-async.git"},"users":{"itonyyo":true},"bugs":{"url":"https://github.com/sboudrias/run-async/issues"},"license":"MIT","versions":{"0.1.0":{"name":"run-async","version":"0.1.0","description":"Utility method to run function either synchronously or asynchronously using the common `this.async()` style.","main":"index.js","scripts":{"test":"mocha -R spec"},"repository":{"type":"git","url":"git://github.com/SBoudrias/run-async"},"keywords":["flow","flow-control","async"],"author":{"name":"Simon Boudrias","email":"admin@simonboudrias.com"},"license":"MIT","bugs":{"url":"https://github.com/SBoudrias/run-async/issues"},"homepage":"https://github.com/SBoudrias/run-async","dependencies":{"once":"^1.3.0"},"devDependencies":{"mocha":"^1.21.4"},"_id":"run-async@0.1.0","dist":{"shasum":"c8ad4a5e110661e402a7d21b530e009f25f8e389","tarball":"http://nexus.dui88.com:8081/nexus/content/groups/npm-all/run-async/-/run-async-0.1.0.tgz"},"_from":".","_npmVersion":"1.4.6","_npmUser":{"name":"sboudrias","email":"admin@simonboudrias.com"},"maintainers":[{"name":"sboudrias","email":"admin@simonboudrias.com"}],"directories":{}},"1.0.0":{"name":"run-async","version":"1.0.0","description":"Utility method to run function either synchronously or asynchronously using the common `this.async()` style.","main":"index.js","scripts":{"test":"mocha -R spec"},"repository":{"type":"git","url":"git://github.com/SBoudrias/run-async.git"},"keywords":["flow","flow-control","async"],"author":{"name":"Simon Boudrias","email":"admin@simonboudrias.com"},"license":"MIT","bugs":{"url":"https://github.com/SBoudrias/run-async/issues"},"homepage":"https://github.com/SBoudrias/run-async","dependencies":{"is-promise":"^2.1.0","once":"^1.3.0"},"devDependencies":{"bluebird":"^2.10.2","mocha":"^1.21.4"},"gitHead":"3f7174fac180c9e90bd4ecff9956c2ceb7d731ba","_id":"run-async@1.0.0","_shasum":"5a63bec4fdc3331786f9758861a7f27000c0e9e1","_from":".","_npmVersion":"2.14.2","_nodeVersion":"0.12.7","_npmUser":{"name":"sboudrias","email":"admin@simonboudrias.com"},"dist":{"shasum":"5a63bec4fdc3331786f9758861a7f27000c0e9e1","tarball":"http://nexus.dui88.com:8081/nexus/content/groups/npm-all/run-async/-/run-async-1.0.0.tgz"},"maintainers":[{"name":"sboudrias","email":"admin@simonboudrias.com"}],"directories":{}},"2.0.0":{"name":"run-async","version":"2.0.0","description":"Utility method to run function either synchronously or asynchronously using the common `this.async()` style.","main":"index.js","scripts":{"test":"mocha -R spec"},"repository":{"type":"git","url":"git://github.com/SBoudrias/run-async.git"},"keywords":["flow","flow-control","async"],"author":{"name":"Simon Boudrias","email":"admin@simonboudrias.com"},"license":"MIT","bugs":{"url":"https://github.com/SBoudrias/run-async/issues"},"homepage":"https://github.com/SBoudrias/run-async","dependencies":{"is-promise":"^2.1.0","once":"^1.3.0","promise-resolver":"^1.0.0"},"devDependencies":{"bluebird":"^2.10.2","mocha":"^1.21.4"},"gitHead":"80220998e71abb21d87367c562821d23efea2643","_id":"run-async@2.0.0","_shasum":"bc9e25f25f40992375f2533aa381e355da412616","_from":".","_npmVersion":"2.14.2","_nodeVersion":"0.12.7","_npmUser":{"name":"sboudrias","email":"admin@simonboudrias.com"},"dist":{"shasum":"bc9e25f25f40992375f2533aa381e355da412616","tarball":"http://nexus.dui88.com:8081/nexus/content/groups/npm-all/run-async/-/run-async-2.0.0.tgz"},"maintainers":[{"name":"sboudrias","email":"admin@simonboudrias.com"}],"directories":{}},"2.1.0":{"name":"run-async","version":"2.1.0","description":"Utility method to run function either synchronously or asynchronously using the common `this.async()` style.","main":"index.js","scripts":{"test":"mocha -R spec"},"repository":{"type":"git","url":"git://github.com/SBoudrias/run-async.git"},"keywords":["flow","flow-control","async"],"author":{"name":"Simon Boudrias","email":"admin@simonboudrias.com"},"license":"MIT","bugs":{"url":"https://github.com/SBoudrias/run-async/issues"},"homepage":"https://github.com/SBoudrias/run-async","dependencies":{"is-promise":"^2.1.0","promise-resolver":"^3.0.0"},"devDependencies":{"mocha":"^2.3.3","pinkie":"^1.0.0"},"gitHead":"766bfe282253b4c2628ead1b6e6dcf7511a5fcc7","_id":"run-async@2.1.0","_shasum":"2505300a22be63202297a9494b6f5f5c441ccd23","_from":".","_npmVersion":"3.5.3","_nodeVersion":"5.2.0","_npmUser":{"name":"sboudrias","email":"admin@simonboudrias.com"},"dist":{"shasum":"2505300a22be63202297a9494b6f5f5c441ccd23","tarball":"http://nexus.dui88.com:8081/nexus/content/groups/npm-all/run-async/-/run-async-2.1.0.tgz"},"maintainers":[{"name":"sboudrias","email":"admin@simonboudrias.com"}],"directories":{}},"2.2.0":{"name":"run-async","version":"2.2.0","description":"Utility method to run function either synchronously or asynchronously using the common `this.async()` style.","main":"index.js","scripts":{"test":"mocha -R spec"},"repository":{"type":"git","url":"git+https://github.com/sboudrias/run-async.git"},"keywords":["flow","flow-control","async"],"author":{"name":"Simon Boudrias","email":"admin@simonboudrias.com"},"license":"MIT","dependencies":{"is-promise":"^2.1.0","pinkie-promise":"^2.0.0"},"devDependencies":{"mocha":"^2.3.3"},"gitHead":"5c6dc70500fd5c0b6ab1ba93f5f1a3338bfeaa84","bugs":{"url":"https://github.com/sboudrias/run-async/issues"},"homepage":"https://github.com/sboudrias/run-async#readme","_id":"run-async@2.2.0","_shasum":"8783abd83c7bb86f41ee0602fc82404b3bd6e8b9","_from":".","_npmVersion":"3.5.3","_nodeVersion":"5.2.0","_npmUser":{"name":"sboudrias","email":"admin@simonboudrias.com"},"dist":{"shasum":"8783abd83c7bb86f41ee0602fc82404b3bd6e8b9","tarball":"http://nexus.dui88.com:8081/nexus/content/groups/npm-all/run-async/-/run-async-2.2.0.tgz"},"maintainers":[{"name":"sboudrias","email":"admin@simonboudrias.com"}],"_npmOperationalInternal":{"host":"packages-13-west.internal.npmjs.com","tmp":"tmp/run-async-2.2.0.tgz_1458198577245_0.4591540393885225"},"directories":{}},"2.3.0":{"name":"run-async","version":"2.3.0","description":"Utility method to run function either synchronously or asynchronously using the common `this.async()` style.","main":"index.js","scripts":{"test":"mocha -R spec"},"engines":{"node":">=0.12.0"},"repository":{"type":"git","url":"git+https://github.com/sboudrias/run-async.git"},"keywords":["flow","flow-control","async"],"files":["index.js"],"author":{"name":"Simon Boudrias","email":"admin@simonboudrias.com"},"license":"MIT","dependencies":{"is-promise":"^2.1.0"},"devDependencies":{"mocha":"^3.1.2"},"gitHead":"23767c9d7eaf6a6bb1241fc9e12776685258c50e","bugs":{"url":"https://github.com/sboudrias/run-async/issues"},"homepage":"https://github.com/sboudrias/run-async#readme","_id":"run-async@2.3.0","_shasum":"0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0","_from":".","_npmVersion":"3.10.8","_nodeVersion":"7.0.0","_npmUser":{"name":"sboudrias","email":"admin@simonboudrias.com"},"dist":{"shasum":"0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0","tarball":"http://nexus.dui88.com:8081/nexus/content/groups/npm-all/run-async/-/run-async-2.3.0.tgz"},"maintainers":[{"name":"sboudrias","email":"admin@simonboudrias.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/run-async-2.3.0.tgz_1480655904296_0.6874290609266609"},"directories":{}}},"name":"run-async","time":{"modified":"2016-12-02T05:18:24.544Z","created":"2014-08-11T01:11:31.399Z","0.1.0":"2014-08-11T01:11:31.399Z","1.0.0":"2015-10-13T06:10:24.777Z","2.0.0":"2015-10-18T21:12:16.901Z","2.1.0":"2016-01-14T06:51:30.979Z","2.2.0":"2016-03-17T07:09:37.775Z","2.3.0":"2016-12-02T05:18:24.544Z"},"readmeFilename":"README.md","homepage":"https://github.com/sboudrias/run-async#readme"}