Как собирать запросы в execute и возвращать ответ?
Метод execute позволяет отправлять запросы не по одиночке, а собирать в пачки и отправлять раз в 50/334 мс. Допустим, все запросы приложения собираются в массив и раз 50 мс циклом отбирается 25 из них, объединяются в code и отправляются на сервер.
Вопрос в том, как каждой функции вернуть свой ответ?
Например, есть три функции messages.send, users.get,
messages.getHistory. Они объединяются в execute запрос и отправляются. В ответ приходит массив с результатами. Как первой вернуть результат отправки сообщения, второй список юзеров, а третьей историю сообщений?
Допустим, вы написали некий Диспетчер. Каждый раз, когда в приложении надо вызвать что-то через API, вы не выполняете вызов, а отправляете задачу в этот Диспетчер: Dispatcher.add("users.get", data, callback);
Там внутри как-то ждёте заполнения очереди как минимум на 10 вызовов и тогда выполняете.
// собрать задачи и отложить их коллбеки в том же порядке
const tasks = []; // сюда названия методов и данные
const callbacks = []; // сюда идут callback
// собрать код запроса execute из массива tasks
// ...
// выполнить один вызов execute
VK.Api.call("execute", params, function(result){
// здесь обрабатываем ответ из execute
// тут же доступен определённый выше массив callbacks
});
Не знаю, как реализовать сбор, чтобы модуль мог работать в двух режимах: без execute или при включении функции execute.init(50) или execute.init(334) с сбором запросов в пачки