最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

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

IT培训 admin 7浏览 0评论

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

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

场景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,它只查询数据库。

回答如下:

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

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

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

场景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,它只查询数据库。

回答如下:

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

发布评论

评论列表 (0)

  1. 暂无评论