aiter

0.0.13 • Public • Published

aiter-js

Lightweight async iterator for Node.js

Quick Examples

var range = require('aiter').range;
range(1, 10).forEach(function (i, next) {
    setTimeout(function() {
        console.log('visit ' + i);
        next();
    });
}).then(function () {
    console.log('async iteration complete');
});

Installation

$ npm install aiter

Examples

async array iteration

var range = require('aiter').range;
range(['a', 'b', 'c', 'd']).forEach(function (i, next) {
    setTimeout(function() {
        console.log('visit ' + i);
        next();
    });
}).then(function () {
    console.log('async iteration complete');
});
 
var aiter = require('aiter');
aiter.forEach(['a', 'b', 'c', 'd'], function (i, next) {
    setTimeout(function() {
        console.log('visit ' + i);
        next();
    });
}).then(function () {
    console.log('async iteration complete');
});

async numeric loop

var range = require('aiter').range;
range(1,100).forEach(function (i, next) {
    setTimeout(function() {
        console.log('visit ' + i);
        next();
    });
}).then(function () {
    console.log('async iteration complete');
});
 
var aiter = require('aiter');
aiter.forEach(aiter.range(1,100), function (i, next) {
    setTimeout(function() {
        console.log('visit ' + i);
        next();
    });
}).then(function () {
    console.log('async iteration complete');
});

omitted next function

var range = require('aiter').range;
range(1,100).forEach(function (i) {
    console.log('visit ' + i);
}).then(function () {
    console.log('async iteration complete');
});
 
var aiter = require('aiter');
aiter.forEach(aiter.range(1,100), function (i) {
    console.log('visit ' + i);
}).then(function () {
    console.log('async iteration complete');
});

skip iteration

var range = require('aiter').range;
range(1,10).forEach(function (i, next, iter) {
    console.log('visit ' + i);
    if(== 3) {
        var skipped = iter.skip(3); // skipped is [4, 5, 6]
        console.log("skipped: " + skipped);
    }
    next();
}).then(function () {
    console.log('async iteration complete');
});

simple count

var range = require('aiter').range;
range(1, 10).count(function condition(i) { return i % 2 == 0; }, function result(count) {
  console.log('range(1, 10).count(i %% 2) => %d', count);
});

async count

var range = require('aiter').range;
range(1, 10000).count(function asyncCondition(i, next) {
  process.nextTick(function(){
    next(% 2 == 0);
  });
}, function result(count) {
  console.log('range(1, 10000).count(i %% 2) => %d', count);
});

License

MIT

Package Sidebar

Install

npm i aiter

Weekly Downloads

10

Version

0.0.13

License

MIT

Last publish

Collaborators

  • econquer