Never-ending Pumpkin Mulch

    concurrent-task-queue

    0.0.3 • Public • Published

    concurrent-task-queue

    npm install concurrent-task-queue

    var queue = require('concurrent-task-queue');
     
    //promise html image
    function getImage(url) {
            return new Promise(function (resolve, reject) {
                var image = new Image();
                image.src = url;
                image.onload = function() {
                    resolve(image);
                };
          image.onerror = function(e) {
           resolve(e);
          }
            });
    }
     
    //a task is a promise returning function (needed to avoid the promise to proceed immediately)
    var tasks = [
        ()=>getImage("http://www.free-emoticons.com/files/funny-emoticons/7279.png"),
        ()=>getImage("http://www.free-emoticons.com/files/funny-emoticons/7278.png"),
        ()=>getImage("http://www.free-emoticons.com/files/funny-emoticons/7277.png"),
        ()=>getImage("http://www.free-emoticons.com/files/funny-emoticons/7276.png"),
        ()=>getImage("http://www.free-emoticons.com/files/funny-emoticons/7275.png"),
        ()=>getImage("http://www.free-emoticons.com/files/funny-emoticons/7274.png"),
        ()=>getImage("http://www.free-emoticons.com/files/funny-emoticons/7273.png"),
        ()=>getImage("http://www.free-emoticons.com/files/funny-emoticons/7272.png"),
        ()=>getImage("http://www.free-emoticons.com/files/funny-emoticons/7271.png"),
        ()=>getImage("http://www.free-emoticons.com/files/funny-emoticons/7270.png")
    ];
     
    //queue returns a promise returning function. tasks is an array of promise returning functions, and concurrent
    //is the max. number of tasks to be executed in parallel
     
    //create queue of images to load (max. 5 simultaneously)
    var loadimages = queue(tasks, 5);
     
    /*
    //note that every queue is a promise returning function, ergo a task!
    //for that queues can be composed to other queues, each with an individual
    //setting for concurrency, ultimately allowing to describe complex sequences of
    //async procedures easily.
     
    var transformimages = queue(transformtasks, 1);
    var sequence = queue([loadimages, transformimages], 1)
    /* */
     
    //invoke queue sequence
    loadimages().then(function(result) {
        result.forEach(function(elem) {
       if(elem instanceof Image)
         document.body.appendChild(elem);
        console.log(elem);
      })
    }).catch(function(e) { console.log(e) });

    Install

    npm i concurrent-task-queue

    DownloadsWeekly Downloads

    1

    Version

    0.0.3

    License

    ISC

    Last publish

    Collaborators

    • hagb4rd