javascript - Node.js Twitter API 游标

标签 javascript node.js twitter

我正在使用 npm-twit获取特定帐户的关注者。

Twitter API 从单个 GET 请求返回最多 5000 个结果。

如果我正在查询的用户拥有超过 5000 个关注者,则数据会返回“next_cursor”值。

要获得接下来的 5000 个结果,我需要重新运行 GET 函数,将“next_cursor”值作为参数传递给它。我似乎不知道该怎么做。

我在考虑 while 循环,但我无法重置全局变量,我想是因为作用域:

var cursor = -1

while ( cursor != 0 ) { 

  T.get('followers/ids', { screen_name: 'twitter' },  function (err, data, response) {

  // Do stuff here to write data to a file

  cursor = data["next_cursor"];

  })

}

显然我不是 JS 天才,所以任何帮助将不胜感激。

最佳答案

您遇到的问题是由于 Node.js 是异步

T.get('followers/ids', { screen_name: 'twitter' },  function getData(err, data, response) {

  // Do stuff here to write data to a file

  if(data['next_cursor'] > 0) T.get('followers/ids', { screen_name: 'twitter', next_cursor: data['next_cursor'] }, getData);

  })

}

请注意:

  1. 我给内部回调函数起了个名字。这样我们就可以从内部递归调用它。
  2. 循环替换为递归回调。
  3. 如果有 next_cursor 数据,那么我们调用 T.get 使用相同的函数 getData

请注意,Do stuff here 代码将被执行多次(与下一个游标一样多)。由于它是递归回调 - 顺序是有保证的。


如果你不喜欢递归回调的想法,你可以通过以下方式避免它:

  1. 如果可能,预先找出所有next_cursor,并使用for 循环生成请求。
  2. 或者,使用异步辅助模块,如 Async (尽管出于学习目的,我会避免使用模块,除非您已经精通这个概念)。

关于javascript - Node.js Twitter API 游标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28008897/

相关文章:

javascript - 密码字段中的 Jquery 默认值

javascript - 无法使用库 Hammer.js

javascript - Facebook:FB登录时黑屏

javascript - React-Leaflet - 自定义 Pin,OnClick 链接到另一个页面

javascript - 无法与 Node 连接到端口错误

node.js - 多语言 express 应用

javascript - 500 错误 :expected "indent", 但得到 "newline"

twitter - 开发人员/技术人员应该在 Twitter/Facebook 上关注哪些人?

ios - TweetSheet 和 FacebookSheet 初始文本

database - 如何在没有空列/单元格的情况下实现 Twitter 推文、回复和转发数据库架构