2016-11-03 12 views
0

ファイルから読み込んで内容を順番に、つまり大きなファイルを140文字のチャンクに入れようとしています。私は私のコードの他のコンポーネントが正しく動作することを確認しました。最初はforループを使用していましたが、その場合はつぶやきの順番が混乱して順番に並んでいませんでした。私はそれがロードバランスや何かtwitterサーバーによるものだと思ったので、setTimeoutを使用してコード内で一時停止を設定することにしました。コードは以下の証明される:twitterで正しく動作していないsetTimeout node.js api

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); 
} 

私はちょうどconsole.logその出力しようとした場合、それは適切にそれをしない、代わりにちょうどに文字列の同じ部分を与えるので、私は何かがのsetTimeout部分と間違っている知っていますn回ツイートしてください。

すべてのポインタを歓迎します。私はJavascriptの初心者です(これは私の最初のJavascriptコードのようなものです)ので、間違いがあれば簡単に私のところに行きましょう。私もtwitterパッケージを使っています。npm install twitter

答えて

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); 
+0

まだ動作していません。それはノードが非同期であるからですか? – darthcoder

+0

申し訳ありませんが、閉鎖を忘れました。編集 – Dafuck

+0

私はちょうど更新しました。もし私がtwitter.comのtweet timesを見ていれば、それは全く待っていません、私が送るすべてのつぶやきは同時に到着します。 setTimeoutは受け入れられません:( – darthcoder

関連する問題