我正在为reddit编写一个web爬虫,每2秒只允许1个请求,并希望使用递归来发出请求。在完成1个人的一系列获取请求注释后,我想发出完成并再次在消息队列中的下一个用户名上调用注释。问题是每当我超过一个级别时,我得到一个“TypeError:对象#没有方法'发出'”。
我也愿意接受更好的方法,我刚刚开始学习节点,并确信有更好的方法来实现这一目标。
我在下面的要点中发布了我的代码......任何帮助都会很棒!
答案 0 :(得分:2)
问题在于this
,它是一个关键字(非自由变量),其值为函数调用的“接收者”。
例如,给定:
x = {fn: function () {return this} }
x.fn()
然后在fn
内,this
评估x
评估的内容(以及x.fn() === x
)。在使用 no 接收器调用代码grabComments
时,this
将恢复为全局对象。您可能对Function.call/apply
感兴趣,或者只是简化代码以使用嵌套函数处理递归,以便self
可以在范围内保持绑定。
(在JavaScript中,方法不绑定到对象:它们只是被推入属性的函数,因此接收器在确定this
时是最重要的executiong函数。)
另见:
快乐的编码。