Code Monkey home page Code Monkey logo

async-promise-queue's Introduction

async-promise-queue

Build Status

A wrapper around the async module, that provides an improved promise queue.

Some highlights:

  • promiseified method (all wired up)
  • in a failure scenario, it will wait for pending work before rejecting. This prevents the run-away work problem.

Usage

npm install async-promise-queue

or

yarn add async-promise-queue

Debug logging

DEBUG="async-promise-queue*" node <your program>

And you will be informed when a queue is used, and what its concurrency becomes (note: we can always add more logging, submit your ideas as pull requests!)

Example

'use strict';

const queue = require('async-promise-queue');

queue.async // a reference to the `async` module which `async-promise-queue` is requiring.

// the example worker
const worker = queue.async.asyncify(function(work) {
  console.log('work', work.file);
  return new Promise(resolve => {
    if (work.file === '/path-2') { throw new Error('/path-2'); }
    if (work.file === '/path-3') { throw new Error('/path-3'); }
    setTimeout(resolve, work.duration);
  });
});

// the work
const work = [
  { file:'/path-1',  duration: 1000 },
  { file:'/path-2',  duration: 50 },
  { file:'/path-3',  duration: 100 },
  { file:'/path-4',  duration: 50 },
];

// calling our queue helper
queue(worker, work, 3)
  .catch(reason => console.error(reason))
  .then(value   => console.log('complete!!', value))

async-promise-queue's People

Contributors

mikrostew avatar stefanpenner avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

async-promise-queue's Issues

Fix async 2.6.4 compability

Hi! ๐Ÿ‘‹

Firstly, thanks for your work on this project! ๐Ÿ™‚

Today I used patch-package to patch [email protected] for the project I'm working on.

Here is the diff that solved my problem:

Build Error (broccoli-persistent-filter:Babel > [Babel: @ember/test-helpers])

Cannot assign to read only property 'drain' of object '#<Object>'


Stack Trace and Error Report: /var/folders/5s/1y9hqll10z37zpn907glnh0c0000gn/T/error.dump.6af4450e13b7a860ed6da3733b67de52.log
diff --git a/node_modules/async-promise-queue/index.js b/node_modules/async-promise-queue/index.js
index 962c645..29f4bd5 100644
--- a/node_modules/async-promise-queue/index.js
+++ b/node_modules/async-promise-queue/index.js
@@ -10,8 +10,8 @@ module.exports = function queue(worker, work, concurrency) {
     } else {
       var q = require('async').queue(worker, concurrency);
       var firstError;
-      q.drain = resolve;
-      q.error = function(error) {
+      q.drain(resolve);
+      q.error(function(error) {
         if (firstError === undefined) {
           // only reject with the first error;
           firstError = error;
@@ -25,7 +25,7 @@ module.exports = function queue(worker, work, concurrency) {
           reject(firstError);
         };
 
-      };
+      });
       q.push(work);
     }
   });

This issue body was partially generated by patch-package.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.