widgets tweet español blockquote javascript jquery arrays twitter

javascript - tweet - twitter rest api



cómo solicitar la API de Twitter sin ingresar una recursión (1)

Parece que solo tiene una instancia de las matrices news_array y user_tweets . En esos, presionas todo el resultado de tus consultas de API. Sin embargo, llama a la función combine_arrays en todo el conjunto de arreglos desde un bucle (cada vez que la búsqueda le proporcionó un nuevo conjunto de resultados), ejecutándose varias veces sobre algunos de los elementos.

Supongo que reiniciar

var user_tweets = [];

dentro de la función find_tweets ayudaría algo.

No puede acceder a los datos de Ajax fuera de la devolución de llamada. En su lugar, deberá esperar hasta que se resuelvan todas las solicitudes asíncronas. Recomiendo usar el objeto diferido de jQuery, que facilita mucho el manejo de tales cosas:

function news_tweets(query, user_id, count) { var news_array = [], user_tweets = []; return $.getJSON("https://api.twitter.com/1/statuses/user_timeline.json", { include_entities: "true", include_rts: "false", user_i: user_id, count: count }).then(function (data) { return $.when.apply(null, $.map(data, function (item) { news_array.push({ news_user: item.user.name, news_date: item.created_at, news_profile_img: item.user.profile_image_url, news_text: item.text, news_url: item.entities.urls.length ? item.entities.urls[0].url : '''' }); return $.getJSON("http://search.twitter.com/search.json", { q: item.text, rpp: 10, include_entities: "true", result_type: "mixed" }).done(function (data) { $.each(data.results, function (i, item) { user_tweets.push({ user: item.from_user, user_id: item.from_user_id, date: item.created_at, user_profile_img: item.entities.urls.length ? item.entities.urls[0].url : '''', text: item.text }); }); }); })); }).then(function() { // this callback is executed [once] when all requests are done // and the user_tweets array is filled // arguments is an array of all search request results var full_array = news_array.concat(user_tweets); console.log(full_array); return full_array; }) }

Uso:

news_tweets(…).done(function callback(full_array) { // do something with all the objects });

Alguien sabe cómo puedo hacer solicitudes a Twitter api en base a consultas de texto sin usar una recursividad.

este es mi código

function news_tweets(query, user_id, count) { news_array = []; user_tweets = []; full_array = []; $.getJSON("https://api.twitter.com/1/statuses/user_timeline.json?include_entities=true&include_rts=false&user_id=" + user_id + "&count=" + count + "&callback=?", function (data) { $.each(data, function (i, item) { var user = item.user.name; var date = item.created_at; var profile_img = item.user.profile_image_url; var text = item.text; var url = (item.entities.urls.length > 0 ? item.entities.urls[0].url : ''''); news_array.push({ news_user: user, news_date: date, news_profile_img: profile_img, news_text: text, news_url: url }); }); find_tweets(news_array); }); } function find_tweets(news_array) { for (var i in news_array) { var news_text = news_array[i].news_text; $.getJSON("http://search.twitter.com/search.json?q=" + news_text + "&rpp=10&include_entities=true&result_type=mixed&callback=?", function (data) { $.each(data.results, function (i, item) { var user = item.from_user; var user_id = item.from_user_id; var date = item.created_at; var user_profile_img = item.profile_image_url; var text = item.text; var url = (item.entities.urls.length > 0 ? item.entities.urls[0].url : ''''); user_tweets.push({ user: user, user_id: user_id, date: date, user_profile_img: user_profile_img, text: text }); }); combine_arrays(news_array, user_tweets); }); } function combine_arrays(news_array, user_tweets) { full_array = news_array.concat(user_tweets); console.log(full_array); } }

cuando uso console.log ("hello") o trato de conectar las dos matrices, todo se ejecuta tres veces.