我对递归,回调和nodejs有很大的问题。
我有这个对象例如:
var a= [
{index : 1},
{index : 2},
{index : [
{index : 11},
{index : 12},
{index : [
{index : 111},
{index : 112},
{index : "end-of-tree"},
]},
]},
{index : 4},
]
我想按顺序显示:
1
2
11
12
111
112
end-of-tree
4
使用console.log(value)
在纯JavaScript中,它很容易,但是当节点异步运行时,它会有点复杂。
谁能帮助我?
答案 0 :(得分:1)
你可以尝试这样简单的事情!
function ff(item){
var temp = item.index;
if(temp instanceof Array) temp.forEach(ff);
else console.log(temp);
}
a.forEach(ff);
实际上你的问题没有任何异步,它是数组中的同步itteration!
答案 1 :(得分:0)
我设法让它发挥作用。
JSON例子:
var a= [
{index : 1},
{index : 2},
{index : [
{index : 11},
{index : 12},
{index : [
{index : 111},
{index : 112},
{index : "end-of-tree 1xx"},
]},
]},
{index : 4},
{index : [
{index : 51},
{index : 52},
{index : [
{index : 531},
{index : 532},
{index : [
{index : 5341},
{index : 5342},
{index : [
{index : 53441},
{index : 53442},
{index : "end-of-tree 5xx"},
]},
]},
]},
]},
{index : 6},
{index : 7},
{index : 8},
{index : 9},
{index : [
{index : 'A0'},
{index : 'A1'},
{index : [
{index : 'A21'},
{index : 'A22'},
{index : [
{index : 'A311'},
{index : 'A312'},
{index : [
{index : 'A3131'},
{index : 'A3132'},
{index : "end-of-tree Axx"},
]},
]},
]},
]},
]
Javascript代码:
function tree(json) {
item=json[0];
if (item) {
if (Array.isArray(item.index)) {
tree(item.index);
} else {
console.log(item.index)
json.shift();
if (json) tree(json);
}
} else {
a.shift();
if (a.length>0) tree(a);
}
}
tree(a)
控制台日志结果:
1
2
11
12
111
112
end-of-tree 1xx
4
51
52
531
532
5341
5342
53441
53442
end-of-tree 5xx
6
7
8
9
A0
A1
A21
A22
A311
A312
A3131
A3132
end-of-tree Axx
答案 2 :(得分:0)
@亚历克斯-rocabillis .... https://github.com/oracle/node-oracledb/blob/master/doc/api.md#-523-execute
oracle execute fonction是异步的。 我要创建另一篇文章来解释这个问题。
5.2.3 execute()
原型
void execute(String sql,[Object bindParams,[Object options,]] function(Error error,[Object result]){}); 返回值
无
描述
此调用执行SQL或PL / SQL语句。有关示例,请参见SQL执行。
这是一个异步调用。
要执行的语句可能包含IN绑定,OUT或IN OUT绑定值或变量,它们使用对象或数组绑定。
回调函数返回一个结果对象,包含任何提取的行,任何OUT和IN OUT绑定变量的值,以及受DML语句执行影响的行数。
参数