【发布时间】: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