首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >javascript回调和匿名函数的作用域是什么?

javascript回调和匿名函数的作用域是什么?
EN

Stack Overflow用户
提问于 2010-10-01 12:09:04
回答 1查看 370关注 0票数 2

我使用node.js和riak-js编写了以下代码。我有一个递归函数walk,它应该是一个JSON文档列表,但却返回一个空列表……为什么?如何修复?

代码语言:javascript
复制
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', []);  

提前感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-10-01 12:13:23

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

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

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3836479

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档