serverless-offline-msk
Version:
A serverless offline plugin that enables AWS MSK events
89 lines (67 loc) • 2.59 kB
Markdown
Promise-based queue
`promise-queue` can be installed using `npm`:
```
npm install promise-queue
```
- `new Queue(Number maxConcurrent, Number maxQueued): Queue`
- `Queue
- `Queue
- `Queue
By default `Queue` tries to use global Promises, but you can specify your own promises.
```js
Queue.configure(require('vow').Promise);
```
Or use old-style promises approach:
```js
Queue.configure(function (handler) {
var dfd = $.Deferred();
try {
handler(dfd.resolve, dfd.reject, dfd.notify);
} catch (e) {
dfd.reject(e);
}
return dfd.promise();
});
```
```js
var maxConcurrent = 1;
var maxQueue = Infinity;
var queue = new Queue(maxConcurrent, maxQueue);
app.get('/version/:user/:repo', function (req, res, next) {
queue.add(function () {
// Assume that this action is a way too expensive
// Call of this function will be delayed on second request
return downloadTarballFromGithub(req.params);
})
.then(parseJson('package.json'))
.then(function (package) {
res.send(package.version);
})
.catch(next);
});
```
```js
var maxConcurrent = 1;
var maxQueue = 1;
var queue = new Queue(maxConcurrent, maxQueue);
queue.add(function () {
queue.getQueueLength() === 0;
queue.getPendingLength() === 1;
return somePromise();
});
queue.add(function () {
queue.getQueueLength() === 0;
queue.getPendingLength() === 0;
return somePromise();
});
queue.getQueueLength() === 1;
queue.getPendingLength() === 1;
```
[](http://jsfiddle.net/RVuEU/1/)