2

我使用 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', []);  

提前致谢!

4

1 回答 1

4

你得到一个空数组,因为db.get()它是异步的。它立即返回,无需等待回调被调用。因此当解释器到达return list语句时,list仍然是一个空数组。

一切都是异步的(非阻塞),这是 Node.js(甚至在浏览器脚本中)的一个基本概念。

于 2010-10-01T04:13:23.470 回答