gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 18:32:48 25 4
gpt4 key购买 nike

我正在为 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com