Node.js的循环模块

时间:2010-11-26 23:02:08

标签: javascript node.js

几分钟前我问过循环问题,请参阅Asynchronous for cycle in JavaScript

这一次,我的问题是 - 是否有任何Node.js模块?

for ( /* ... */ ) {

  // Wait! I need to finish this async function
  someFunction(param1, praram2, function(result) {

    // Okay, continue

  })

}

alert("For cycle ended");

2 个答案:

答案 0 :(得分:3)

难以将这些东西移到模块中吗?

编辑:更新了代码。

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')}
);

休息取决于你,不可能使这100%通用。

答案 1 :(得分:1)

是的,您可以使用Async.js

  

Async是一个实用程序模块   提供直截了当,强大的功能   与...合作的功能   异步JavaScript。虽然   最初设计用于   node.js,也可以直接使用   在浏览器中。