【问题标题】:Closure in Node.js [duplicate]Node.js 中的闭包 [重复]
【发布时间】:2017-01-19 00:54:28
【问题描述】:

我使用了嵌套的 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()

输出-

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

我已经关注this的example5

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

【问题讨论】:

    标签: javascript node.js closures


    【解决方案1】:

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

    for (var i = 0; i

    =]

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-10-10
      • 2012-02-05
      • 1970-01-01
      • 1970-01-01
      • 2018-03-16
      • 2012-05-06
      • 2012-08-05
      相关资源
      最近更新 更多