0.1.4 • Published 6 years ago

ferryboat.js v0.1.4

Weekly downloads
2
License
MIT
Repository
github
Last release
6 years ago

ferryboat

An async control-flow library

Browser

<script src="yourStaticPath/ferryboat.js"></script>

Default import

npm install ferryboat.js
import ferryboat from 'ferryboat.js';

Usage

  function test(value) {
    return new Promise(function (resolve) {
      setTimeout(function () {
        resolve(value || 'ferryboat' + Math.random());
      }, 1000);
    });
  }

  new ferryboat({
    max: 2,
    stopOnFail: false,
    taskList: [
      {
        fn: test
      },
      {
        fn: test
      },
      {
        fn: test
      },
      {
        fn: test
      },
      {
        fn: test.bind(null, 'FERRYBOAT')
      }
    ],
    onSuccess: function (res) {
      console.log(res.result);
      console.log(res.current);
      console.log(res.total);
      console.log(res.taskIndex);
    },
    onFail: function (res) {
      console.log(res.error);
      console.log(res.current);
      console.log(res.total);
      console.log(res.taskIndex);
    },
    onComplete: function (res) {
      console.log(res.successCount);
      console.log(res.failCount);
      console.log(res.total);
    }
  });

  setTimeout(function() {
    ferryboat.add({
      fn: test.bind(null, 'FERRYBOAT_ADD_TASK')
    });
  }, 4000);

API

Constructor

new ferryboat(options);

NamesRequiredTypeDescription
optionstrueObjectinitial options

Options

NamesDefaultsDescription
max1maximum number of processes
stopOnFailtruestop execute when a task fails
taskList[]task list (the function should returns promise)
onSuccessnullsuccess callback function
onFailnullfail callback function
onCompletenullcomplete callback function