【发布时间】:2016-03-22 22:15:53
【问题描述】:
下面的代码成功返回推文和推特数据,我现在的问题是从推特数组中排序和返回细节的最佳方法是什么,例如在 sortTweets() 中指定的那些。我目前遇到的主要问题是,由于 twitter API 和 JS 的异步特性,我不确定如何指定函数等待 getTweets() 返回必要的数据,然后可以对其进行排序和修剪一直到推文、用户等。这是解决此问题的最佳方式,还是在 handleTweets() 函数中对推文进行排序更容易?
var Twit = require('twit');
var client = new Twit({
consumer_key: '',
consumer_secret: '',
access_token: '',
access_token_secret: '',
timeout_ms: 60*1000,
});
var count = 10,
profile = 'manutd',
date = '2011-11-11',
keyword = 'man city',
lan = 'en',
search = keyword + " since:" + date + " lang:" + lan;
var tweets = getTweets();
var profiles = getProfile();
console.log('Started')
//var sortedTweets = sortTweets(tweets);
//console.log(sortedTweets)
function handleTweets(err, data){
if (err) {
console.error('Get error', err)
}
else {
console.log('Get Tweets');
//console.log(data);
console.log('Finished');
}
}
function handleFriends(err, data){
if (err) {
console.error('Get error', err)
}
else {
console.log('Get Friends');
//console.log(data);
console.log('Finished');
}
}
function sortTweets (err, data, response) {
if (err) {
console.error('Get error', err)
}
else if (getTweets.ready){
for (var indx in data.statuses){
var tweet = data.statuses[indx];
console.log('on: ' + tweet.created_at + ' : @' + tweet.user.screen_name + ' : ' + tweet.text+'\n\n');
}
}
else {
setTimeout(sortTweets,100);
}
}
function getTweets(){
return client.get('search/tweets', { q: search, count: count, from: profile },
handleTweets)
}
function getProfile( callback ){
return client.get('friends/list', { screen_name: profile, count: count },
handleFriends)
}
【问题讨论】:
标签: javascript node.js sorting twitter