{ "name": "p-throttler", "version": "0.1.1", "description": "A promise based throttler capable of limiting execution of parallel tasks", "main": "index.js", "dependencies": { "q": "~0.9.2" }, "devDependencies": { "mocha": "~1.10.0", "expect.js": "~0.2.0" }, "scripts": { "test": "mocha -R spec" }, "repository": { "type": "git", "url": "git://github.com/IndigoUnited/node-p-throttler.git" }, "bugs": { "url": "http://github.com/IndigoUnited/node-p-throttler/issues" }, "keywords": [ "promise", "throttler", "trottle", "deferred", "worker", "tasks", "parallel" ], "author": { "name": "IndigoUnited", "email": "hello@indigounited.com", "url": "http://indigounited.com" }, "license": "MIT", "readme": "# p-throttler [![Build Status](https://secure.travis-ci.org/IndigoUnited/node-p-throttler.png)](http://travis-ci.org/IndigoUnited/node-p-throttler.png)\n\nA promise based throttler responsible for limiting execution of parallel tasks.\nThe number of parallel tasks may be limited and configured per type.\n\n\n## Installation\n\n`$ npm install p-throttler`\n\n\n## API\n\n### #create(defaultConcurrency, types)\n\nConstructs a new throttler.\n\nThe `defaultConcurrency` is the default maximum concurrent functions being run (-1 to specify no limits). \nThe `types` allows you to specify different concurrencies for different types. \n\nExample:\n\n```js\nvar throttler = PThrottler.create(15, { // or new PThrottler()\n 'network_io': 10,\n 'disk_io': 50\n});\n```\n\n\n### .enqueue(func, [type]): Promise\n\nEnqueues a function to be ran. The function is expected to return a promise or a value. \nThe returned promise is resolved when the function finishes execution.\n\nThe `type` argument is optional and can be a `string` or an array of `strings`. \nUse it to specify the type(s) associated with the function. \n\nThe function will run as soon as a free slot is available for every `type`. \nIf no `type` is passed or is unknown, the `defaultConcurrency` is used. \n\nThe execution order is guaranteed for functions enqueued with the exact same `type` argument.\n\nExample:\n\n```js\n\nvar method = function () {\n return Q.resolve('foo');\n};\n\nvar throttler = PThrottler.create(15, {\n 'foo': 1,\n 'bar': 2\n});\n\n// Single type, will only run when a free slot for\n// \"foo\" is available\nthrottler.enqueue(function () {\n return method(); // method() returns some promise\n}, 'foo')\n.then(function (value) {\n console.log(value);\n});\n\n// Multiple type, will only run when a free slot for\n// \"foo\" and \"bar\" are available\nthrottler.enqueue(function () {\n return method(); // method() returns some promise\n}, ['foo', 'bar'])\n.then(function (value) {\n console.log(value);\n});\n```\n\n\n### .abort(): Promise\n\nAborts all current work being done.\nReturns a promise that is resolved when the current running functions finish to execute. \nAny function that was in the queue waiting to be ran is removed immediately.\n\n\n## License\n\nReleased under the [MIT License](http://www.opensource.org/licenses/mit-license.php).\n", "readmeFilename": "README.md", "homepage": "https://github.com/IndigoUnited/node-p-throttler#readme", "_id": "p-throttler@0.1.1", "_shasum": "15246409d225d3eefca85c50de710a83a78cca6a", "_resolved": "https://registry.npmjs.org/p-throttler/-/p-throttler-0.1.1.tgz", "_from": "p-throttler@0.1.1" }