itera

0.1.8 • Public • Published

itera

npm version Build Status

itera for promise iteration needs. Mix generators and promises for better control flow. Made this for my personal workflow. Most likely co will be a better solution for you.

If you do not understand JavaScript generators see:

Example

NOTE:

Below step1() step2() step3() functions all return promises. See tests code for full implementation of below generator logic.

Plus, itera-sample is a simple project showing itera in action.



const Generator = function * () {

    // ERRORS AND YIELDING PROMISES
    // if a promise executes and resolves with an error.
    // The value of the error resolution "reject()" is placed in the
    // variable associated with the yield.

    const result1 = yield step1();

    if (result1 instanceof Error) {

        // console.log(typeof result1);
        // console.log(result1.message);
        // console.log(result1.name);
        // console.log('ERROR');
        return callback(result1, null);
    }


    // result1 yield SUCCESS DO STUFF with result1  

    console.log(result1);

    const result2 = yield step2();

    if ( (result2.name !== undefined) && (result2.name === 'Error')) {

        // HANDLE THE ERROR
        // console.log(result2.message);
        // console.log(result2.name);
        console.log('ERROR');
        return; // exit the generator.
    }

    console.log(result2);
    // return; exits generator early if error exists.


    const result3 = yield step3();

    if ( (result3.name !== undefined) && (result3.name === 'Error')) {

        // console.log(typeof result3);
        // console.log(result3.message);
        // console.log(result3.name);
        // console.log(result3);
        console.log('ERROR');
    }

    console.log(result3);

    return;
};

const callback = function (err, result) {

    // do stuff after generator is complete.

};

Itera(Generator, callback);

Credits

JavaScript Ninja Second Edition p. 159 listing-6.19.html

  • reworked the async() to implement my preferences on error handling and to get the code ready for use in my projects.
  • Authors: John Resig, Bear Bibeault, Josip Maras

co

  • some inspiration came from co too.
  • Authors: @tjholowaychuk & @jonathanong

;-)

Package Sidebar

Install

npm i itera

Weekly Downloads

1

Version

0.1.8

License

BSD-3-Clause

Last publish

Collaborators

  • zoe-1