powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Подскажите паттерн по отложенному запуску функции?
18 сообщений из 18, страница 1 из 1
Подскажите паттерн по отложенному запуску функции?
    #38089368
Shitbox2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Периодически происходят аякс-запросы и в колбек-функции каждого должна выполняться функция allgood(), но она должна запуститься только когда нет незавершенных запросов. Т.е. должна помещаться в какую-то очередь и выполниться сразу же как появится окно (все ответы будут получены, а новых запросов еще не отправлено).

Есть ли какие-нибудь паттерны или готовые решения на этот счет? Может быть такая ситуация имеет свое название? Есть ли в jQuery есть какой-нибудь счетчик ожидающих аякс-запросов, который можно было бы проанализировать?
...
Рейтинг: 0 / 0
Подскажите паттерн по отложенному запуску функции?
    #38089371
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Debouncing?
...
Рейтинг: 0 / 0
Подскажите паттерн по отложенному запуску функции?
    #38089392
IDVsbruck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что-то подсказывает мне, что дешевле, эффективней и правильней это сделать на стороне сервера. Даже есть термин такой - MQ (Message Queue) и специализированные продукты. Причем, эти продукты позволяют в автоматическом режиме складывать сообщения в базе, на случай если подписчик отключится или должен получать сообщения отложенно. Возможно, в рамках твоего проекта это слишком сложно, но отвечаю на прямо поставленный вопрос относительно готового решения.
Продукты - WebSphereMQ (C, Java, .NET, Perl, Python, SOAP), RabbitMQ (Java, .NET), ActiveMQ (Java) и т.д.
...
Рейтинг: 0 / 0
Подскажите паттерн по отложенному запуску функции?
    #38089399
Фотография Имя пользователя1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shitbox2Есть ли в jQuery есть какой-нибудь счетчик ожидающих аякс-запросов, который можно было бы проанализировать?есть глобальные каллбэки, в которых можно упаковать логику
http://api.jquery.com/category/ajax/global-ajax-event-handlers/
...
Рейтинг: 0 / 0
Подскажите паттерн по отложенному запуску функции?
    #38089460
Shitbox2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторDebouncingНе то, но спасибо за наводку! Отличный плагин, пригодится в другом месте. Из-за 20 строчек даже жалко файл подключать, проще код скопипастить.

авторЧто-то подсказывает мне, что дешевле, эффективней и правильней это сделать на стороне сервераВот не знаю... Посылать на сервер лишние запросы как-то не правильно. В моем случае нужно сохранять порядок расположения элементов, но делать это стоит только если есть уверенность, что в это время никакой элемент не будет удален или создан. Поэтому самое простое (как посоветовали), запихнуть функцию в
Код: javascript
1.
$.ajaxStop(function(){allgood()})

Хотя лучше использовать
Код: javascript
1.
2.
3.
$(".log").ajaxComplete(function(e, xhr, settings){
    if (была запущена функция добавления/удаления) allgood()
});

Только не могу понять как узнать, что среди завершенных были нужные мне функции...

Еще есть вариант использовать $.when( deferred1, deferred2,… ), но опять же не знаю как в качестве deferred1, deferred2,… получить ссылки из нужных аякс-запросов (пихать deferred1, deferred2,… в их success-функции так же не хочется)
...
Рейтинг: 0 / 0
Подскажите паттерн по отложенному запуску функции?
    #38089509
mage.lan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shitbox2,

А что вам мешает завести глобальную пременную равную нулю и тупо при запуске любого аякса ее плюс плюсить, при калбеке минус минусить. Если она равна нулю запускайте свою функцию.
...
Рейтинг: 0 / 0
Подскажите паттерн по отложенному запуску функции?
    #38089513
Shitbox2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мешает желание не использовать промежуточные переменные, т.к. они, будучи в глобальной... или просто достаточно обширной области, затрудняют понимание программы. Это для меня показатель такой, чем меньше срок жизни у переменных, тем лучше код (в нашем случае, она живет бесконечно). ИМХО, конечно.
...
Рейтинг: 0 / 0
Подскажите паттерн по отложенному запуску функции?
    #38089520
mage.lan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shitbox2,

Окей, тогда пишите фабрику аякс запросов, которая будет в курсе, если вас синглтон не устраивает.
Суть та же, плюс лишний класс (читать как лишняя память), зато вы ей ограничите область видимости.

ЗЫ. Я не понимаю этого повального увлечения замыкать все в одной функции, если вы пишете для браузера и не используете специальных инструментов, то это не более чем модный приемчик.
...
Рейтинг: 0 / 0
Подскажите паттерн по отложенному запуску функции?
    #38089539
няка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mage.lan,


1. получаете свой аякс
2. проверяете наличие очереди, если есть, добавляете в очередь, если нет, вызываете свою функцию
3. на выходе из вашей функции вызываете следующий элемент очереди
...
Рейтинг: 0 / 0
Подскажите паттерн по отложенному запуску функции?
    #38089541
няка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
Подскажите паттерн по отложенному запуску функции?
    #38089645
Фотография iConst
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shitbox2Мешает желание не использовать промежуточные переменные, т.к. они, будучи в глобальной... или просто достаточно обширной области, затрудняют понимание программы. Это для меня показатель такой, чем меньше срок жизни у переменных, тем лучше код (в нашем случае, она живет бесконечно). ИМХО, конечно.Т.е. использовать одну (пусть и глобальную) переменную - плохо, а навертеть чего-то - хорошо...
Однако... :)

Ну, коли мы такие продвинутые - то, почему бы не упаковать эту (и другие общие) переменные в объект, обозвав его, например Global ? Или не применить модульность?
...
Рейтинг: 0 / 0
Подскажите паттерн по отложенному запуску функции?
    #38090083
Shitbox2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторэто не более чем модный приемчик.авторТ.е. использовать одну (пусть и глобальную) переменную - плохо, а навертеть чего-то - хорошо... Не надо буквально воспринимать) Если не найду способа лучше, придется, конечно, использовать промежуточную переменную, что будет лучшим решением. Но обычно всегда удается обойтись без этого...

Сейчас мне насоветуют всего, начну экспериментировать и определю оптимальный вариант. Пока хотелось бы узнать, как в $.when( deferred1, deferred2,… ) записать нужные аякс-функции, если бы это можно было легко сделать, то решение образовалось бы само собой.

queue() изучаю, но пока плохо представляю как применить...
...
Рейтинг: 0 / 0
Подскажите паттерн по отложенному запуску функции?
    #38090472
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shitbox2Пока хотелось бы узнать, как в $.when( deferred1, deferred2,… ) записать нужные аякс-функции, если бы это можно было легко сделать, то решение образовалось бы само собой.Что значит как? Метод jQuery ajax() возвращает объект deferred, его и передавайте в when.
...
Рейтинг: 0 / 0
Подскажите паттерн по отложенному запуску функции?
    #38091166
Shitbox2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторЧто значит как? Метод jQuery ajax() возвращает объект deferred, его и передавайте в when.Не верно спросил... У меня в разных местах возникают аякс запросы.
Код: javascript
1.
2.
3.
deferred1 = $.ajax(...)
...
deferred2 = $.ajax(...)


Причем, они периодически повторяются и deferred1, deferred2 будут принимать значения все новых и новых объектов запросов

Допустим, после каждого запроса записываю в $.when полученный объект. Если этот же запрос вызвать немедленно еще раз, то значение в $.when перезапишется и deferred1 от старого незавершенного запроса будет потерян и $.when никак не определит ситуацию когда старый запрос выполняется дольше нового

Можно присваивать рандомные имена, но тогда в $.when скопится куча мусора отработавших запросов...
...
Рейтинг: 0 / 0
Подскажите паттерн по отложенному запуску функции?
    #38091258
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shitbox2,

Заведите флаги, и опрашивайте их до тех пор, пока не будут все установлены.
Пару строчек кода и никакого жКвери.
...
Рейтинг: 0 / 0
Подскажите паттерн по отложенному запуску функции?
    #38093764
Shitbox2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все перепробовал и как всегда победил способ, годящийся только для конкретной задачи. Практически то же, что способ с флагом. По логике моей программы создается js-объект, его данные отправляются на сервер, ему возвращается и сохраняется в нем айдишник. Функция же, заинтересованная, в том, чтобы объект был 100% сохранен на сервере, как раз перебирает все js-объекты. Поэтому осталось вставить в ее цикл условие проверки существования айдишника + удалять айдишник перед отправкой запроса в функции удаления. На все понадобилось две строчки.
...
Рейтинг: 0 / 0
Подскажите паттерн по отложенному запуску функции?
    #38093814
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Бррр. Генерировать событие не лучше-ли решение? Или так:
Код: javascript
1.
2.
3.
var deferred = save(someObject);

deferred.done(doSomthing)


Или тогда уж состояние объекту добавить: отправлен на сервер, принят и обработан сервером, отказано в обработке
...
Рейтинг: 0 / 0
Подскажите паттерн по отложенному запуску функции?
    #38094179
Shitbox2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Слишком много кода получалось. Это нужно было по деффереру добавить в ф-ии добавления/удаления и сохранять с сылки в новом параметре js-объекта, потом при окончании еще 2 строчки генерации события. Потом отдельно перебирать объекты и записывать ссылки в $.when, которая потом должна была бы вызывать нужную функцию, которая опять должна была перебирать объекты... Минимум 10 строчек кода + создание новых сущностей + использование новых ф-й (пока в коде нигде не задействовал дефферер). Овчинка выделки не стоит
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Подскажите паттерн по отложенному запуску функции?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]