javascript - 函数递归调用自身时,是什么导致 "no method"错误?

标签 javascript node.js

我正在为 reddit 编写一个网络爬虫,它每 2 秒只允许 1 个请求,并且想使用递归来发出请求。在对 1 人评论的一系列获取请求完成后,我想发出以显示完成并在消息队列中的下一个用户名上再次调用评论。问题是每当我超过一层深度时,我都会收到“TypeError: Object # has no method 'emit'”。

我也愿意寻求更好的方法来做到这一点,我刚刚开始学习 Node ,并且确信有更好的方法来实现这一点。

我已经在下面的要点中发布了我的代码...任何帮助都会很棒!

https://gist.github.com/1729182

最佳答案

问题出在 this 上,它是一个关键字(不是自由变量),计算结果为函数调用的“接收者”。

例如,给定:

x = {fn: function () {return this} }
x.fn()

然后在 fn 中,this 计算出 x 计算出的结果(因此 x.fn() === x )。在代码中 grabComments 被调用时没有 接收器,在这种情况下 this 恢复为全局对象。您可能对 Function.call/apply 感兴趣,或者只是简化代码以使用 nested 函数处理递归,以便 self 可以保持绑定(bind)-在范围内。

(在 JavaScript 中,方法绑定(bind)到对象:它们只是被插入属性的函数,因此接收器在确定this 用于 executiong 函数。)

另见:

快乐编码。

关于javascript - 函数递归调用自身时,是什么导致 "no method"错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9126177/

相关文章:

javascript - 通过 AJAX 拉入 JSON 以填充下拉列表

javascript - 如何在 Internet Explorer 11 上检测 Windows 8.1 中的触摸屏?

javascript - 为什么一个全局定义的数组在回调函数中将数据推送给它在全局范围内是空的?

javascript - 使用delete或通过在Javascript中分配null来删除对象?

javascript - 如何在 React Native 中安装组件之前显示微调器?

javascript - Passport JS 无法检索用户

javascript - 使用签名 URL 上传到 S3 时获取 403(禁止访问)

node.js - 如何在项目之间重用组件

node.js - 驱动服务API某些参数不起作用

javascript - jQuery:循环具有不同超时值的循环