哪些代码在javascript中表现更好?

时间:2017-12-18 12:38:31

标签: javascript node.js

我的问题与以下代码有关 -

情景1:

var queue = [];
var busy = false;

exports.getAProfile = function (params, cb) {
    queue.push({params: params, cb: cb});
    if (!busy) {
        checkQueue(function (c, next) {
            service.getAProfileNow(c.params, function (err, res) {
                c.cb(err,res);
                next();
            });
        });
    }
}

function checkQueue(actualTask) {
    var c = queue.shift();
    if (c) {
        busy = true;
        actualTask(c, function () {
            checkQueue(actualTask);
        })
        return queue.length;
    } else {
        busy = false;
        return queue.length;
    }
}

情景2:

var queue = [];
var busy = false;

var actualTask = function (c, next) {
    service.getAProfileNow(c.params, function (err, res) {
        c.cb(err,res);
        next();
    });
}

exports.getAProfile = function (params, cb) {
    queue.push({params: params, cb: cb});
    if (!busy) {
        checkQueue();
    }
}

function checkQueue() {
    var c = queue.shift();
    if (c) {
        busy = true;
        actualTask(c, function () {
            checkQueue(actualTask);
        })
        return queue.length;
    } else {
        busy = false;
        return queue.length;
    }
}

两个代码的差异是 -

  • 函数actualTask(我猜)在第一个场景中定义了很多次,而在第二个场景中它只定义了一次。

是'我的解释'是正确的吗?哪一个更好?为什么?代码的性能是否都不同?

注意:service模块在​​代码中是require-d,它只查询数据库。

1 个答案:

答案 0 :(得分:-1)

仅定义一次功能不会使性能或执行速度快。它只会减少代码的文件大小,并使代码形成得非常好。在这两种情况下,函数必须跳转到过程调用。