Javascript Node.js中的闭包
我曾使用嵌套for循环,但虽然没有得到所需的结果,但还是转到了闭包 这是我之前代码的框架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) {
// 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