使用回调而不会造成泄漏

时间:2018-02-02 14:52:41

标签: node.js memory-leaks callback

使用这段简单的代码

function get_data(callback)
{
    connection.query(`GET QUERY;`, function(error, row) {
        if(error) throw error;
        var data = row;
        ...
        ...
        return callback(data);
        //Never setting to null data
    });
}

以后再调用这个函数:

function handle_data(){
    ...
    get_data(function(data){
        var some_variable = data;
        //do some stuff
        ...
        //I dont set some_variable to null here either.
    });
}

connection来自mysql包。

所以我想知道我是否在创建内存泄漏,因为我从未将第一个函数中的数据设置为null。

1 个答案:

答案 0 :(得分:0)

您的代码中没有内存泄漏。数组和对象变量通过'引用副本传递。在javascript中,它一直指向同一个对象。只要有效引用在程序范围内,对象就会保留在内存中,否则就会被清除。对于原始变量,当它不再在范围内时会被清除。 但是,如果要打开mysql连接而不关闭它,一旦完成作业,就可能导致连接泄漏。