我正在尝试从文件中读取并按顺序发送内容,即将大文件分成140个字符的块。我已经验证我的代码的其他组件正常工作。起初,我只是使用for循环,但在这种情况下,推文的顺序混乱,并不顺序。我认为这是因为负载均衡或Twitter服务器的东西,所以我决定使用setTimeout在代码中设置暂停。代码如下所示:
var Twitter = require('twitter');
var client = new Twitter({
consumer_key: process.env.TWITTER_CONSUMER_KEY,
consumer_secret: process.env.TWITTER_CONSUMER_SECRET,
access_token_key: process.env.TWITTER_ACCESS_TOKEN_KEY,
access_token_secret: process.env.TWITTER_ACCESS_TOKEN_SECRET
});
const fs = require('fs');
var long_string = fs.readFileSync(__dirname + "/tweetfromhere.txt").toString();
var short_string = new String("");
const tweet_length = 140;
if (long_string.length%tweet_length === 0)
{
var num_tweets = long_string.length/tweet_length;
}
else
{
var num_tweets = Math.floor(long_string.length/tweet_length);
console.log(num_tweets);
}
for (i = 0; i <= num_tweets; i++)
{
short_string = long_string.substr(i*tweet_length, tweet_length);
var stat = {status: short_string}
setTimeout(function(){
client.post('statuses/update', stat, function(error, tweet,response) {
if(error)
{
console.log(error);
}
//console.log(tweet); // Tweet body.
console.log(response); // Raw response object.
});
}, 3000);
}
我知道setTimeout部分有问题,因为如果我只是尝试console.log
它的输出,它不能正确地执行它,而只是将字符串的相同部分赋予n次推文。
欢迎提出任何指示。我是Javascript的新手,(这就像我的第一个真正的Javascript代码),所以如果我犯了一个明显的错误,请放轻松。我也使用简单npm install twitter
答案 0 :(得分:0)
var request = require("request");
var stats = [];
for (i = 0; i <= 4; i++)
{
stats.push({status: "yolo "+i});
}
var interval = setInterval(function(){
if(!stats || stats.length == 0)
{
console.log("end");
clearInterval(interval);
}
else
{
console.log("post "+stats[0].status);
stats.splice(0,1);
}
}, 3000);