Все методы засунуть в execute

Обсуждение и помощь по вопросам взаимодействия с ВКонтакте API в IFrame-приложениях (JavaScript, PHP и т.д)
Ответить
ioncube
Сообщения: 10
Зарегистрирован: 27 янв 2014, 18:59

Все методы засунуть в execute

Сообщение ioncube »

Всем добрый вечер.
Возникла проблема с запросами к вк, тобишь вк их ограничивает.
Имеется некий класс vkAPP с набором методов.

Код: Выделить всё

var vkAPP = {    wall: function() {        VK.api("wall.get", {owner_id:viewer_id, extended:1, filter:'owner'}, vkAPP.wallCallback);    },    wallCallback: function (data) {        var wall = "";        $.each(data.response, function (inx, wl){            wall += '..здесь код генерации сообщений на стене..';        });        $("#posts_w").append(wallHtml);// сюда добавляем сообщения в конец    },    photosAlbum: function() {        VK.api("photos.getAlbums", {owner_id:viewer_id, count:2, need_covers:1, photo_sizes:0}, vkAPP.AlbumsCallback);    },    AlbumsCallback: function (data) {        var albums = "";        $.each(data.response, function (j,el){            albums += '..здесь генерим альбомы.. ';        });        $("#albums").append(album);    },    friendsGet: function() {        VK.api("friends.get", {user_id:viewer_id, fields: "photo_50,domain", order:"random", name_case:"ins", count:6}, vkAPP.friendCallback);    },    friendCallback: function (data) {        var friend = "";        $.each(data.response, function (l,fr){            friend += '..генерим друзей..';        });        $("#friendlist").append(friend);    },    groupGet: function() {        VK.api("groups.get", {user_id: viewer_id, count:6,extended:1, fields:"description"}, vkAPP.groupCallback);    },    groupCallback : function (data) {        var group = "";         $.each(data.response, function (s,g){            if (s > 0){                group += '..группы пользователя (страницы)..';            }        });        $("#groups").append(group);      }...... и еще много методов};$(document).ready(function (){vkAPP.wall();vkAPP.photosAlbum();vkAPP.friendsGet();vkAPP.groupGet();}); 
В данный момент сейчас к вк идет 4 запроса и вк их ограничивает.
Сделал сначала, каждый метод делал через execute. но это нерациональное использование)
Пример кода и так переписывал каждый метод.

Код: Выделить всё

 friendsGet: function() {                VK.api("execute", {code:'return API.friends.get({user_id:'+viewer_id+', fields: "photo_50,domain", order:"random", name_case:"ins", count:6});'}, vkAPP.friendCallback);        },        friendCallback: function (data) {                var fri= "";                $.each(data.response, function (l,fr){                        fri += '.....';                });                $("#friend").append(fri);        }, 
Но это ничего не поменяло, равносильно что написано выше)))
ЗАДАЧА
В общем, все методы, которые создаются при загрузке засунуть в execute. Но моя голова не может додуматься.... Кто может помочь?
ioncube
Сообщения: 10
Зарегистрирован: 27 янв 2014, 18:59

Re: Все методы засунуть в execute

Сообщение ioncube »

up
yan
Сообщения: 9
Зарегистрирован: 21 янв 2014, 22:10

Re: Все методы засунуть в execute

Сообщение yan »

"Первый запрос к API" не пробовали использовать?
ioncube
Сообщения: 10
Зарегистрирован: 27 янв 2014, 18:59

Re: Все методы засунуть в execute

Сообщение ioncube »

"Первый запрос к API" не пробовали использовать?
что вы имеете под первый запросом к api?
Если вы имеете в виду метод users.get, то он не подходит
пробовал создать к примеру метод Run и в него засунуть execute
Пример

Код: Выделить всё

var vkAPP = {    .................... все те же методы    groupGet: function() {        VK.api("groups.get", {user_id: viewer_id, count:6,extended:1, fields:"description"}, vkAPP.groupCallback);    },    groupCallback : function (data) {        var group = "";        $.each(data.response, function (s,g){            if (s > 0){                group += '..группы пользователя (страницы)..';            }        });        $("#groups").append(group);      },   Run: function(){var apiData =  vkAPP.groupGet(), vkAPP.audioGet();   VK.api("execute", {code:"return ["+apiData+"]";}, vkAPP.runCallback);   },   runCallback: function(data){body       $.each(data.response, function (v, run){   вывод всего в html       });   }];$(document).ready(function (){vkAPP.Run();});
Но у меня это не проканало к сожалению.....
yan
Сообщения: 9
Зарегистрирован: 21 янв 2014, 22:10

Re: Все методы засунуть в execute

Сообщение yan »

что вы имеете под первый запросом к api?
настройка в управлении приложением - третье поле, стрелки про другое не обращайте внимание :)
Изображение

на ограничение по кол-ву запросов не проверял правда, возможно там другое, плюс можно попробовать совместить запросы там и в приложении при загрузки
описание здесь http://vk.com/dev/apps_init - api_result
ioncube
Сообщения: 10
Зарегистрирован: 27 янв 2014, 18:59

Re: Все методы засунуть в execute

Сообщение ioncube »

плюс можно попробовать совместить запросы там и в приложении при загрузки
вы наверное немного не так поняли или я не так понял)
Всё работает в первом варианте, НО...
Когда вк отдает ответ, я получаю не всю инфу при ответе. Вопрос, а почему? А потому что, сразу идет к примеру 8-10 запросов к разным методам и вк некоторые игнорирует.
Задача заключается в том, чтобы эти все запросы всунуть в 1 execute и тогда получится не 8-10 запросов на 1 человека, а 1 запрос на 1-го человека.
Я не сильно понял, чем может мне помочь первого API-запроса.
Если можете, приведите пример реализации первого апи с execute и как я должен словить дату в js
yan
Сообщения: 9
Зарегистрирован: 21 янв 2014, 22:10

Re: Все методы засунуть в execute

Сообщение yan »

http://vk.com/page-1_8813441 читайте внимательно
возвращать несколько значений из execute элементарно - присваиваете результаты запросов нескольким переменным и потом из них составляете ответный json, но насчет этого не обольщайтесь - в execute количество запросов тоже ограничено, пару лет назад было порядка 20 запросов, вот так кстати можно в цикле обрабатывать данные в execute http://vk.com/topic-1_22047002?post=50005
ioncube
Сообщения: 10
Зарегистрирован: 27 янв 2014, 18:59

Re: Все методы засунуть в execute

Сообщение ioncube »

просто 300 строк кода написано, а тут такое ограничение =( Думал может как-то можно немного переписать код пол execute
для вывода я использую $.each, куда проще чем нативный js
В принципе, спасибо, пойду мудрить) У меня там где-то 10 методов, так что execute не будут ограничивать
Ответить