Javascript 包含循环的函数在NodeJS中是否应该是异步的?

Javascript 包含循环的函数在NodeJS中是否应该是异步的?,javascript,node.js,Javascript,Node.js,我是NodeJS新手,我不确定应该如何声明下面的函数。该函数仅包含生成字符串的for循环。没有进行“重量级”计算 变体1: function getRandomString(arg) { for (var i = 0; i < 100; i++) { // ... } return string; } var randomString = getRandomString(arg); // ... an async code which will

我是NodeJS新手,我不确定应该如何声明下面的函数。该函数仅包含生成字符串的for循环。没有进行“重量级”计算

变体1:

function getRandomString(arg) {
    for (var i = 0; i < 100; i++) {
        // ...
    }

    return string;
}

var randomString = getRandomString(arg);
// ... an async code which will use the string
函数getRandomString(arg){ 对于(变量i=0;i<100;i++){ // ... } 返回字符串; } var randomString=getRandomString(arg); // ... 将使用字符串的异步代码 变体2:还是应该将其设置为异步(异步样式)?它看起来像这样:

function getRandomString(arg, callback) {
    for (var i = 0; i < 100; i++) {
        // ...
    }

    callback(string);
}

getRandomString(arg, function(randomString) {
    // Async code...
});
function getString(arg, callback) {
    for(var i = 0;i<100;i++) {
        // ...
    }
    callback(string);
}
函数getRandomString(参数,回调){ 对于(变量i=0;i<100;i++){ // ... } 回调(字符串); } getRandomString(参数,函数(randomString){ //异步代码。。。 });
将其设置为“异步”没有任何好处。事实上,代码将同步运行,getString方法仅在回调完成后退出

您真正需要做的唯一决定就是选择一种编码风格(您希望它看起来是异步的还是非异步的)

函数getString(arg,回调) { 对于(var i=0;i 或者我应该让它异步吗?比如:

function getRandomString(arg, callback) {
    for (var i = 0; i < 100; i++) {
        // ...
    }

    callback(string);
}

getRandomString(arg, function(randomString) {
    // Async code...
});
function getString(arg, callback) {
    for(var i = 0;i<100;i++) {
        // ...
    }
    callback(string);
}
函数getString(arg,回调){
对于(var i=0;节点“除您的代码外,所有代码都同时运行”的iRule of thumb。如果您在节点运行时运行for循环,则无论您如何返回结果,for循环都会占用节点。如果它是一个快速函数,我倾向于使用第一种形式,因为它很简单,我认为编写太多回调会变得混乱。但是,我对节点上的性能不是很熟悉,所以我不确定是什么原因ch的性能会更好。回调没有什么区别,重的部分是一个
for
循环,这总是同步的,我想…所以基本上,如果我有一些循环(很少迭代-非常快),我将如何使用它(同步/异步,因为它是相同的),但当我使用一些循环进行更复杂的计算时(例如,它将花费5秒,并且经常使用),最好为此派生新的过程,对吗?因此对于异步函数,我应该将循环的内容放在“nextTick”内?正如我前面所说,循环速度很快(约0.5ms)所以这不要紧,也不要紧?对于像您这样的快速循环,使其异步的开销太大了。不要尝试。