0.0.13 • Published 8 years ago
aiter v0.0.13
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(i == 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(i % 2 == 0);
});
}, function result(count) {
console.log('range(1, 10000).count(i %% 2) => %d', count);
});