Узнать, когда четко пройдет по всем друзьям
Добавлено: 11 фев 2014, 19:10
Код, который проходится по всем друзьям, соблюдая интервал по 3 запроса в секунду. Нужно сначала пройтись, занося в массив id и город каждого друга в массив, а потом отправить массивы в базу. Почему именно таким образом я собираю города друзей, а не сразу одним методом не спрашивайте, мне так нужно. Но проблема в том, что я не знаю, как сделать, чтобы post происходил четко, когда по всем друзьям прошлись. У меня не получается это сделать, так как само число данных в массиве не предсказуемо, потому что если например друг удален, то ничего не заносится. Пробовал ставить счетчик(как в коде ниже), прибавляя по одному при каждом запросе и отправке post, когда счетчик равен количество друзей. Но это не получается, массив каждый раз разный заносится, видимо потому что запросы асинхронные. Нужно сделать, чтобы POST происходил четко, когда прошлись по всем друзьям. Очень буду признателен за помощь.
Код: Выделить всё
<html><head><script src="js/jquery-1.8.3.min.js" charset="windows-1251"></script><script src="http://vkontakte.ru/js/api/xd_connection.js?2" type="text/javascript"></script><script type="text/javascript" charset="cp1251" >window.onload = (function() { VK.init(function() { VK.api("users.get", {user_ids:count,fields:"uids"}, function(data) { var friends_data = data.response;var mas1 = [];var mas2 = []; shet = 0;function getMutual(friendid){shet += 1;VK.api("friends.get",{user_id:friendid,fields:"city"},function(data) { mas1.push(friendid); mas2.push(data.response[0].city);if(shet == friends_data.length){ $.post("vbazu.php", { mas1: mas1, mas2:mas2, }, function(data) { } );} } }); } count = 0;function next_three() { getMutual(friends_data[count].uid); getMutual(friends_data[count+1].uid); getMutual(friends_data[count+2].uid); count += 3;setTimeout(next_three, 1000);}setTimeout(next_three, 1000); }); }); }); </script></head><body></body></html>