Javascript Node.js中的闭包

Javascript Node.js中的闭包,javascript,node.js,closures,Javascript,Node.js,Closures,我曾使用嵌套for循环,但虽然没有得到所需的结果,但还是转到了闭包 这是我之前代码的框架 // First for loop for(data) { connection.query(records as per data) if(!error) { // Second for loop for(abc) { if(condition) {

我曾使用嵌套for循环,但虽然没有得到所需的结果,但还是转到了闭包

这是我之前代码的框架

// First for loop
for(data)
{
    connection.query(records as per data)
    if(!error)
    {   
        // Second for loop
        for(abc)
        {
            if(condition)
            {
                condition1.....
                    result=call method1
                condition2.......
                    result=call method2
                conditionN....
            }
            else
            {
            }

            //After completion second for loop push result into array
            resultArray.push(result)

            // After completion on both for loop callback array         
            if(EOD first for && EOD second for)
            {
                callback(resultArray)
            }
        }
    }
}
这里是使用闭包时出错的代码

function secondFunction(data)
{
    console.log("secondFunction"+data)

    var result = [];
    for (var i = 0; i < data.length; i++) {

        result.push( function() {
            console.log(data[i].type)
        } );
    }
    return result;
}

function firstFunction() 
{
    for (var j = 0; j < r.abc.length; j++) {

         connection.query(" my sql query on r.abc[j].etc ", function(err, rows){

            if (!err)
            {   
               console.log("length"+rows.length)

               var fnlist = secondFunction(rows);
               fnlist[j]();

               console.log("first for")    
            }
            else
            {
                console.log('Error in performing query')
            }
        });
    }
}

firstFunction()
我遵循了第五个例子

具体来说,, 这是在nodejs中使用闭包的正确方法吗?
我们可以在connection.query中使用它吗?如果是,那么我们如何才能实现这一点?

您正在访问for指令中数组的无效位置。。。尝试:

对于var i=0;i =]

length11
secondFunction[object Object],[object Object]
TypeError: fnlist[j] is not a function