[英]setTimeout not working properly with the twitter node.js api
我正在嘗試從文件中讀取內容,然后按順序鳴叫內容,即將一個大文件分成140個字符的塊。 我已經驗證了我代碼的其他組件是否可以正常工作。 起初,我只是在使用for循環,但在那種情況下,tweet的順序混亂了,而且不是連續的。 我認為這是由於負載平衡或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次。
任何指針都將受到歡迎。 我對Java語言非常陌生,(就像我的第一個真正的Javascript代碼一樣),所以如果我犯了一個明顯的錯誤,請對我輕松一點。 我也使用簡單的npm install twitter
安裝的twitter軟件包
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);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.