Разве это трудно переместить материал в модуль?
EDIT: Обновлен код.
function asyncLoop(iterations, func, callback) {
var index = 0;
var done = false;
var loop = {
next: function() {
if (done) {
return;
}
if (index < iterations) {
index++;
func(loop);
} else {
done = true;
callback();
}
},
iteration: function() {
return index - 1;
},
break: function() {
done = true;
callback();
}
};
loop.next();
return loop;
}
exports.asyncFor = asyncLoop;
И небольшой тест:
// test.js
var asyncFor = require('./aloop').asyncFor; // './' import the module relative
asyncFor(10, function(loop) {
console.log(loop.iteration());
if (loop.iteration() === 5) {
return loop.break();
}
loop.next();
},
function(){console.log('done')}
);
Rest до вас, это невозможно сделать это 100% общего.
Итак, вы действительно хотите вызвать метод синхронно? – thejh 2010-11-26 23:05:53
@thejh Да! В точку. – 2010-11-26 23:17:20