jay*_*art 2 javascript twitter asynchronous node.js
我试图通过https://github.com/jdub/node-twitter从Twitter上检索我的最后一条推文
我想声明一个变量,在函数中更改该变量,然后在该函数之外再次使用它.这可能吗?
我已经过身份验证,如果我这样做,可以看到我的最后一条推文:
var tweet;
twit.get('http://api.twitter.com/1/statuses/user_timeline.json', function(data) {
tweet = data[0].text;
console.log(tweet);
});
Run Code Online (Sandbox Code Playgroud)
但我想将我的代码分开并执行:
var tweet;
twit.get('http://api.twitter.com/1/statuses/user_timeline.json', function(data) {
tweet = data[0].text;
});
console.log(tweet);
Run Code Online (Sandbox Code Playgroud)
推文尚未定义.
请教育我:-)
您希望能够立即调用console.log,但node.js不是同步的,这就是它如此强大和快速的原因.你必须习惯使用node.js进行编码的异步模式.get请求是异步的.在回调发生之前,Tweet不会被分配.
在发出异步请求后立即执行Console.log.
尝试:(编辑 - 我建议这个,然后编辑问题以包含此代码)
twit.get('http://api.twitter.com/1/statuses/user_timeline.json', function(data) {
tweet = data[0].text;
console.log(tweet); // executed after call returns
});
// executes immediately after request is sent
console.log("request sent");
Run Code Online (Sandbox Code Playgroud)
请注意,twit.get调用的第二个参数是一个匿名函数,它将在完成异步请求后执行.
这个输出应该是"请求发送",然后推文结果按顺序.