{"_id":"run-async","_rev":"295686","name":"run-async","description":"Utility method to run function either synchronously or asynchronously using the common `this.async()` style.","dist-tags":{"latest":"3.0.0"},"maintainers":[{"name":"sboudrias","email":""}],"time":{"modified":"2023-10-06T06:56:15.000Z","created":"2014-08-11T01:11:31.399Z","3.0.0":"2023-05-07T19:59:36.453Z","2.4.1":"2020-04-27T05:40:09.368Z","2.4.0":"2020-02-26T10:06:22.816Z","2.3.0":"2016-12-02T05:18:24.544Z","2.2.0":"2016-03-17T07:09:37.775Z","2.1.0":"2016-01-14T06:51:30.979Z","2.0.0":"2015-10-18T21:12:16.901Z","1.0.0":"2015-10-13T06:10:24.777Z","0.1.0":"2014-08-11T01:11:31.399Z"},"users":{},"author":{"name":"Simon Boudrias","email":"admin@simonboudrias.com"},"repository":{"type":"git","url":"git+https://github.com/SBoudrias/run-async.git"},"versions":{"3.0.0":{"name":"run-async","version":"3.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"},"engines":{"node":">=0.12.0"},"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","devDependencies":{"mocha":"^10.2.0"},"gitHead":"4d2d46bb161f69ae6358089820db08b11ea60896","bugs":{"url":"https://github.com/SBoudrias/run-async/issues"},"homepage":"https://github.com/SBoudrias/run-async#readme","_id":"run-async@3.0.0","_nodeVersion":"16.17.1","_npmVersion":"8.19.2","dist":{"shasum":"42a432f6d76c689522058984384df28be379daad","size":3084,"noattachment":false,"key":"/run-async/-/run-async-3.0.0.tgz","tarball":"http://name.csiicloud.com:7001/run-async/download/run-async-3.0.0.tgz"},"_npmUser":{"name":"sboudrias","email":"admin@simonboudrias.com"},"directories":{},"maintainers":[{"name":"sboudrias","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/run-async_3.0.0_1683489576261_0.5867186636383466"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2023-05-07T19:59:36.453Z","publish_time":1683489576453,"_source_registry_name":"default","_cnpm_publish_time":1683489576453},"2.4.1":{"name":"run-async","version":"2.4.1","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"],"author":{"name":"Simon Boudrias","email":"admin@simonboudrias.com"},"license":"MIT","dependencies":{},"devDependencies":{"mocha":"^7.1.0"},"gitHead":"f3e0a18abf6e9569abfcf327daa9351c95f109b1","bugs":{"url":"https://github.com/SBoudrias/run-async/issues"},"homepage":"https://github.com/SBoudrias/run-async#readme","_id":"run-async@2.4.1","_nodeVersion":"12.16.1","_npmVersion":"6.13.4","dist":{"shasum":"8440eccf99ea3e70bd409d49aab88e10c189a455","size":2782,"noattachment":false,"key":"/run-async/-/run-async-2.4.1.tgz","tarball":"http://name.csiicloud.com:7001/run-async/download/run-async-2.4.1.tgz"},"maintainers":[{"name":"sboudrias","email":""}],"_npmUser":{"name":"sboudrias","email":"admin@simonboudrias.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/run-async_2.4.1_1587966009268_0.1932416029427002"},"_hasShrinkwrap":false,"publish_time":1587966009368,"_cnpm_publish_time":1587966009368},"2.4.0":{"name":"run-async","version":"2.4.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"],"author":{"name":"Simon Boudrias","email":"admin@simonboudrias.com"},"license":"MIT","dependencies":{"is-promise":"^2.1.0"},"devDependencies":{"mocha":"^7.1.0"},"gitHead":"6dc42ae3c416e4c4feb9069720f4e7c7796c4e15","bugs":{"url":"https://github.com/SBoudrias/run-async/issues"},"homepage":"https://github.com/SBoudrias/run-async#readme","_id":"run-async@2.4.0","_nodeVersion":"13.8.0","_npmVersion":"6.13.7","dist":{"shasum":"e59054a5b86876cfae07f431d18cbaddc594f1e8","size":2747,"noattachment":false,"key":"/run-async/-/run-async-2.4.0.tgz","tarball":"http://name.csiicloud.com:7001/run-async/download/run-async-2.4.0.tgz"},"maintainers":[{"name":"sboudrias","email":""}],"_npmUser":{"name":"sboudrias","email":"admin@simonboudrias.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/run-async_2.4.0_1582711582706_0.5107281545660194"},"_hasShrinkwrap":false,"publish_time":1582711582816,"_cnpm_publish_time":1582711582816},"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","size":2473,"noattachment":false,"key":"/run-async/-/run-async-2.3.0.tgz","tarball":"http://name.csiicloud.com:7001/run-async/download/run-async-2.3.0.tgz"},"maintainers":[{"name":"sboudrias","email":""}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/run-async-2.3.0.tgz_1480655904296_0.6874290609266609"},"directories":{},"publish_time":1480655904544,"_cnpm_publish_time":1480655904544,"_hasShrinkwrap":false},"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","size":3623,"noattachment":false,"key":"/run-async/-/run-async-2.2.0.tgz","tarball":"http://name.csiicloud.com:7001/run-async/download/run-async-2.2.0.tgz"},"maintainers":[{"name":"sboudrias","email":""}],"_npmOperationalInternal":{"host":"packages-13-west.internal.npmjs.com","tmp":"tmp/run-async-2.2.0.tgz_1458198577245_0.4591540393885225"},"directories":{},"publish_time":1458198577775,"_cnpm_publish_time":1458198577775,"_hasShrinkwrap":false},"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","size":3773,"noattachment":false,"key":"/run-async/-/run-async-2.1.0.tgz","tarball":"http://name.csiicloud.com:7001/run-async/download/run-async-2.1.0.tgz"},"maintainers":[{"name":"sboudrias","email":""}],"directories":{},"publish_time":1452754290979,"_cnpm_publish_time":1452754290979,"_hasShrinkwrap":false},"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","size":3543,"noattachment":false,"key":"/run-async/-/run-async-2.0.0.tgz","tarball":"http://name.csiicloud.com:7001/run-async/download/run-async-2.0.0.tgz"},"maintainers":[{"name":"sboudrias","email":""}],"directories":{},"publish_time":1445202736901,"_cnpm_publish_time":1445202736901,"_hasShrinkwrap":false},"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","size":3017,"noattachment":false,"key":"/run-async/-/run-async-1.0.0.tgz","tarball":"http://name.csiicloud.com:7001/run-async/download/run-async-1.0.0.tgz"},"maintainers":[{"name":"sboudrias","email":""}],"directories":{},"publish_time":1444716624777,"_cnpm_publish_time":1444716624777,"_hasShrinkwrap":false},"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","size":2603,"noattachment":false,"key":"/run-async/-/run-async-0.1.0.tgz","tarball":"http://name.csiicloud.com:7001/run-async/download/run-async-0.1.0.tgz"},"_from":".","_npmVersion":"1.4.6","_npmUser":{"name":"sboudrias","email":"admin@simonboudrias.com"},"maintainers":[{"name":"sboudrias","email":""}],"directories":{},"publish_time":1407719491399,"_cnpm_publish_time":1407719491399,"_hasShrinkwrap":false}},"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#### Custom done factory\n```js\nvar runAsync = require('run-async');\n\nrunAsync(function() {\n  var callback = this.customAsync();\n  callback(null, a + b);\n}, 'customAsync')(1, 2)\n```\n\n#### Passing context to async method\n```js\nvar runAsync = require('run-async');\n\nrunAsync(function() {\n  assert(this.isBound);\n  var callback = this.async();\n  callback(null, a + b);\n}).call({ isBound: true }, 1, 2)\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","_attachments":{},"homepage":"https://github.com/SBoudrias/run-async#readme","bugs":{"url":"https://github.com/SBoudrias/run-async/issues"},"license":"MIT"}