Javascript 循环不适用于间隔
我正在使用Firebase和TwitterAPI创建一个Twitter机器人,以解除对非活动帐户的跟踪 这是Nodejs代码:Javascript 循环不适用于间隔,javascript,node.js,loops,firebase,twitter,Javascript,Node.js,Loops,Firebase,Twitter,我正在使用Firebase和TwitterAPI创建一个Twitter机器人,以解除对非活动帐户的跟踪 这是Nodejs代码: // Get the screen_names in `to_unfollow` table firebase.database().ref("to_unfollow/" + settings.PERSON_TWITTER_HANDLE).on("value", function(snapshot) { // Functional Loop var i = 0; fu
// Get the screen_names in `to_unfollow` table
firebase.database().ref("to_unfollow/" + settings.PERSON_TWITTER_HANDLE).on("value", function(snapshot) {
// Functional Loop
var i = 0;
function timedLoop() { // unFollows the user after every `x` seconds
/*=============================================>>>>>
= Thing to be done =
===============================================>>>>>*/
function snapshotToArray(snapshot) { // This function converts the Snapshot data into an array
var returnArr = [];
snapshot.forEach(function(childSnapshot) {
var item = childSnapshot.val();
item.key = childSnapshot.key;
returnArr.push(item);
});
return returnArr;
};
var screen_name_to_unfollow = snapshotToArray(snapshot)[i].key;
console.log(screen_name_to_unfollow);
/*= End of Thing to be done =*/
/*=============================================<<<<<*/
// Increase value of variable `i` by 1. (Increment)
i++;
// How many times to loop
if(i < 5000) {
setTimeout( timedLoop, 1000*20 ); // timedLoop();
}
}
timedLoop(); // Run the loop
});
在候机楼,你可以看到间隔时间不起作用
T.Post 2018-05-31T02:11:27.234Z
Wesbos follower AnnSaid unfollowed.
T.Post 2018-05-31T02:11:27.914Z
Wesbos follower AnnyShivang unfollowed.
T.Post 2018-05-31T02:11:28.865Z
Wesbos follower AntJanus unfollowed.
T.Post 2018-05-31T02:11:29.888Z
Wesbos follower AnthonyCatonPR unfollowed.
T.Post 2018-05-31T02:11:30.975Z
Wesbos follower AppleLaa unfollowed.
T.Post 2018-05-31T02:11:31.733Z
Wesbos follower AsyrafDuyshart unfollowed.
在这种情况下,我能做些什么才能让循环像以前一样工作?我希望每20秒就释放一把不活动的twitter帐户,因为我不想掉入速率限制
提前感谢:-)问题在于firebase的
.on
监听器每次T.post
结束时都会被调用,因为您正在从移除到\u unfollow/
因此,每次T.post
结束时,您都会创建一个额外的setTimeout
循环,如果让该代码运行几分钟,您将向twitter执行数千个请求
改用
。一次
将解决您的问题。在快照中的所有用户都被释放后,您应该向firebase请求另一个集合。确切的问题是什么?T.post
会抛出错误吗?@MarcosCasagrande T.post不会抛出错误。但是循环不能与时间间隔一起工作。timedLoop
只运行一次,或者ir从不运行?按需要连续工作。但不是每隔20秒。我不明白你说的是什么意思:它只是不断地疏远人们。你不想让它对人展开跟踪吗?它会尝试对同一个人展开两次跟踪,或者实际问题是什么?一定是这样,尽管我从未使用过firebase:)我不明白你对的意思,在快照中的所有用户都展开跟踪之后,您应该调用request Other set to firebase。
处理该快照后,您可能有更多用户要取消跟踪,您应该调用:firebase.database().ref(“to_unfollow/”+settings.PERSON\u TWITTER\u HANDLE)。再次查看是否有更多用户输入错误,您应该向firebase请求另一个设置
T.Post 2018-05-31T02:11:27.234Z
Wesbos follower AnnSaid unfollowed.
T.Post 2018-05-31T02:11:27.914Z
Wesbos follower AnnyShivang unfollowed.
T.Post 2018-05-31T02:11:28.865Z
Wesbos follower AntJanus unfollowed.
T.Post 2018-05-31T02:11:29.888Z
Wesbos follower AnthonyCatonPR unfollowed.
T.Post 2018-05-31T02:11:30.975Z
Wesbos follower AppleLaa unfollowed.
T.Post 2018-05-31T02:11:31.733Z
Wesbos follower AsyrafDuyshart unfollowed.