私は基本を学ぶ新しいコーダーです。練習のために、私はユーザーのタイムラインから最後のつかまえをつかみ、それを元に戻す小さなNodeアプリケーションを構築しました。ここでは、コードです:関数のスコープ外のデータにアクセスするにはどうすればよいですか?
// REQUIRES
var dotenv = require('dotenv');
var Twitter = require('twitter');
// LOAD ENV VARIABLES
dotenv.load();
// MAKE A TWITTER CLIENT
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
});
// FUNCTION TO REVERSE A STRING
function reverse(s) {
var o = '';
for (var i = s.length - 1; i >= 0; i--)
o += s[i];
return o;
}
// GRAB LAST TWEET FROM USER TIMELINE AND REVERSE IT
client.get('statuses/user_timeline', {screen_name: 'twitterapi', count: 1}, function(error, tweets, response) {
if(error) throw error;
// console.log(tweets); // Last tweet object from timeline.
var lastTweet = tweets[0].text; // Text from last tweet.
var reverseTweet = reverse(lastTweet); // Last tweet reversed.
console.log("\nYour last tweet was: " + lastTweet);
console.log("\nYour last tweet reversed is: " + reverseTweet);
});
私の質問です:私はそのclient.get()
の範囲外の別の関数にlastTweet
かreverseTweet
を渡したい場合(例えば、別のテキスト解析関数に)、私はそれをどのように行うのでしょうか?
私は変数をグローバルに宣言しようとしましたが、リクエスト/レスポンスの非同期性が原因です。私は間違いなく約束やコールバックなどについて学びたいと思っています(私は今、彼らについてzilchを理解しています)が、この特定の問題を解決する正しい方法かどうかは分かりません。
最後に、適切な質問に適切な語彙を使用していない場合は、教えてください。
それはあなたが 'lastTweet'および/または' reverseTweet'を使用したい機能を表示するために役立つだろう – mhatch