我使用的是嵌套for循环但是虽然我没有得到必需的结果,但我转到了闭包
这是我之前代码的骨架
Error to NSError
这里是我在使用闭包时遇到错误的代码
// 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()
我已按照this
的示例5进行操作具体而言, 这是在nodejs中使用闭包的正确方法吗? 我们可以在connection.query()中使用它吗?如果是,那么我们怎样才能实现这一目标呢?
答案 0 :(得分:-1)
您正在“for”指令中访问数组的无效位置...尝试:
for(var i = 0; i&lt; data.length -1; i ++){
=]