我使用node.js和riak-js编写了以下代码。我有一个递归函数walk,它应该是一个JSON文档列表,但却返回一个空列表……为什么?如何修复?
require('riak-js');
var walk = function(bucket, key, list){
if(list == undefined){
var list = new Array();
}
db.get(bucket, key)(function(doc, meta){
list.push(doc);
if(meta.links.length > 0 && meta.links[0].tag == 'child'){
walk(bucket, meta.links[0].key, list);
}
});
return list;
}
familytree = walk('smith', 'walter', []); 提前感谢!
发布于 2010-10-01 12:13:23
您会得到一个空数组,因为db.get()是异步的。它立即返回,而不等待调用回调。因此,当解释器到达return list语句时,list仍然是一个空数组。
一切都是异步的(非阻塞),这是Node.js (甚至是浏览器脚本)中的一个基本概念。
https://stackoverflow.com/questions/3836479
复制相似问题