javascript - 在函数之外获取推文 ID 数组
问题描述
我正在使用这个很棒的教程来编写一个 twitter 机器人:https ://shiffman.net/a2z/twitter-bots/
我正在尝试获取我的机器人已回复的推文 ID 的数组。我可以使用下面的代码让数组显示在控制台中。
var params = {
q:'from:MYACCOUNT',
result_type:'recent'
}
T.get('search/tweets', params, gotData);
function gotData(err, data, response) {
var tweets = data.statuses;
var arr = []
for (var i = 0; i < tweets.length; i++) {
arr.push(tweets[i].in_reply_to_status_id_str);
};
console.log(arr);
};
我开始挣扎的地方是使该数组在函数之外可用。我尝试了以下方法:
function gotData(err, data, response) {
var tweets = data.statuses;
var arr = []
for (var i = 0; i < tweets.length; i++) {
arr.push(tweets[i].in_reply_to_status_id_str);
};
return arr;
};
var y = gotData();
console.log(y);
错误输出如下:
/home/ubuntu/testbot.js:28
var tweets = data.statuses;
^
TypeError: Cannot read property 'statuses' of undefined
at gotData (/home/ubuntu/testbot.js:28:20)
at Object.<anonymous> (/home/ubuntu/testbot.js:37:9)
at Module._compile (module.js:652:30)
at Object.Module._extensions..js (module.js:663:10)
at Module.load (module.js:565:32)
at tryModuleLoad (module.js:505:12)
at Function.Module._load (module.js:497:3)
at Function.Module.runMain (module.js:693:10)
at startup (bootstrap_node.js:188:16)
at bootstrap_node.js:609:3
这是我第一次尝试这样的事情,所以任何建议都将不胜感激。
解决方案
您正在调用gotData()
,但您没有向其传递所需的参数(错误、数据、响应)
您可以尝试将其更改为以下内容:
function gotData(data) {
var tweets = data.statuses;
var arr = []
for (var i = 0; i < tweets.length; i++) {
arr.push(tweets[i].in_reply_to_status_id_str);
};
return arr;
};
var y = gotData({
statuses: [
{
in_reply_to_status_id_str: '0'
},
{
in_reply_to_status_id_str: '1'
},
{
in_reply_to_status_id_str: '2'
},
]
});
console.log(y);
推荐阅读
- java - 如果指针为空只是为了获取它的字段,是否可以创建新对象?
- go - 对字节片进行更快的按位与运算
- r - R: x 'probs' 在 [0,1] 之外
- angular - 编辑时,Agular 网格抛出错误。加载时出错。Camunda modellar 无法正常工作
- mysql - 无法在 NixOS 上构建 haskell 包 mysql
- java - 索引 2 处的绑定值为 null
- powershell - Powershell搜索数十个365共享邮箱
- azure-api-management - 在计入使用配额之前检查用户是否属于特定组
- python - fastText 安装失败
- tcl - 从 libexpect 调用本机函数