Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / [Ajax] Асинхронный или синхронный запрос. / 25 сообщений из 31, страница 1 из 2
12.12.2014, 19:50
    #38832925
JOIN
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[Ajax] Асинхронный или синхронный запрос.
Всем доброго времени суток. Поиск не дал положительного ответа на мой вопрос, поэтому решил написать тут (если что не бросайте сразу камнем). Задача следующая: Нужно средствами Ajax отправить запрос, который в свою очередь вернет id объектов. Важно чтобы возвращаемый порядок (то бишь порядок id: 1, 4, 8, 10, 12) сохранился. После того как Ajax отрабатывает успешно, нужно воспроизвести этот самый порядок (1, 4, 8, 10, 12) на странице HTML. Проблема возникает как раз в этом порядке. Если отправлять аякс запрос в синхронном режиме - порядок нарушается, тут понятно почему(пояснять не надо), как правило могут менятся местами последние, два три элемента (результатк бывает такой: 1, 4, 8, 12, 10). Если запрос отправлять в асинхронном режиме, порядок сохраняется - проблем нет, только браузер на момент выполнения запроса просто виснет (читал, знаю что это нормально). Подскажите, как сделать чтобы порядок сохранялся в синхронном режиме? Или же всё таки надо будет корректировать этот самый порядок уже на уровне js? Сейчас у меня это работает с опцией асинхронной отправке. Даже гифка отображающая отправку процесса застывает при отправке такого запроса. Заранее спасибо за любой совет.
...
Рейтинг: 0 / 0
12.12.2014, 20:18
    #38832943
JeStone
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[Ajax] Асинхронный или синхронный запрос.
JOIN,
Вы путаете понятия "асинхронный" и "синхронный".
Как вариант решения задачи: вы можете на клиент возвращать не только значение, но и order_id - порядковый номер (вы же знаете заранее в каком порядке должны идти элементы). А на клиенте уже разруливать порядок по этому номеру.
...
Рейтинг: 0 / 0
12.12.2014, 20:21
    #38832946
JeStone
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[Ajax] Асинхронный или синхронный запрос.
и еще вопрос: почему вы не возвращаете все элементы одним Ajax-запросом? Оптимизация производительности какая-то вроде "вывода на отображение по доступности" или другие причины?
...
Рейтинг: 0 / 0
12.12.2014, 20:42
    #38832951
JOIN
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[Ajax] Асинхронный или синхронный запрос.
JeStone,
Несколько раз прочитал, не совсем понял ход ваших мыслей. Поправьте, если я не так понял. Вы предлагаете, зная порядок организовать сортировку на клиенте? Только после сортировке выдать в HTML?
Почему идет отправка ajax запроса по каждому id, потому что я уже реализовал функционал, который позволяет дернуть из базы любой объект по id. Это я в примере простой порядок привел, чтобы не углубляться в подробности. Если дергать все объекты в одном запросе, будет куча данных, которая на мой взгляд повлияет на производительность. Спорить не буду - не пробовал затолкать в один запрос. Как то удобнее по одному запросику отправить, а результат сразу впихнуть в HTML. Всё хорошо, вот только порядок нарушается или при async: false - подвисает браузер на момент обработки запросов.
...
Рейтинг: 0 / 0
12.12.2014, 20:47
    #38832952
JeStone
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[Ajax] Асинхронный или синхронный запрос.
JOINJeStone,
Вы предлагаете, зная порядок организовать сортировку на клиенте? Только после сортировке выдать в HTML?
Можно и сразу вставлять в DOM данные по доступности, но позицию вставки относительно других элементов определять по порядку сортировки. Но ход моих мыслей вы поняли.
...
Рейтинг: 0 / 0
12.12.2014, 20:48
    #38832954
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[Ajax] Асинхронный или синхронный запрос.
а не пробовал смотреть в стору websocet?
об этих проблемах даже не знал.
к прмру не один запрос можно возвращать любое количество ответов с сервера в любом порядке...
...
Рейтинг: 0 / 0
13.12.2014, 12:03
    #38833088
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[Ajax] Асинхронный или синхронный запрос.
JOIN, откройте для себя Deferred . И его реализацию в dojo и jQuery.
...
Рейтинг: 0 / 0
13.12.2014, 12:07
    #38833091
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[Ajax] Асинхронный или синхронный запрос.
Вообще конечно странная задача. Ищу я например отели в Риме и один поставщик прислал мне ответ быстро, а другой чуть позже, а сортировать нужно по цене.

По-любому придётся на клиенте сортировать, если не ждать на сервере пока все поставщики ответят.
...
Рейтинг: 0 / 0
13.12.2014, 14:44
    #38833128
JOIN
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[Ajax] Асинхронный или синхронный запрос.
skyANA откройте для себя Deferred . И его реализацию в dojo и jQuery.

Спасибо за наводку, разберусь и попробую применить у себя.

skyANAВообще конечно странная задача. Ищу я например отели в Риме и один поставщик прислал мне ответ быстро, а другой чуть позже, а сортировать нужно по цене.

По-любому придётся на клиенте сортировать, если не ждать на сервере пока все поставщики ответят.

Задача в подгрузке объектов порциями по 20 штук. Изначально выводится 20 объектов, при скроллинге должны подгрузиться еще 20 сохраняя сортировку. Загрузка идет сортировку сбивается, если в асинхронном режиме отправлять запросы. Я думал про сортировку на клиенте, пока оставил как запасной вариант, если ничего не выйдет, то буду сортировать.

З.Ы Deferred, что то интересное, пожалуй стоит того чтобы изучить тему. Еще раз спасибо.
...
Рейтинг: 0 / 0
13.12.2014, 15:38
    #38833137
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[Ajax] Асинхронный или синхронный запрос.
JOIN, шаблонная у Вас задача. Вы ее не верно решаете.
...
Рейтинг: 0 / 0
13.12.2014, 16:09
    #38833147
FishHook
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[Ajax] Асинхронный или синхронный запрос.
JOINотправлять аякс запрос в синхронном режиме
Чудны твои дела, Господи.
AJAX - Asynchronous Javascript and XML,
синхронный - ajax, это шутка недели
...
Рейтинг: 0 / 0
13.12.2014, 16:18
    #38833149
JeStone
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[Ajax] Асинхронный или синхронный запрос.
FishHook,
что именно вас насмешило?
Код: javascript
1.
2.
3.
4.
5.
6.
$.ajax({
        url: "test.php",
        async: false,
        success: function(data) { }
});
alert('До этого алерта не дойдет, пока не отработает success');
...
Рейтинг: 0 / 0
13.12.2014, 17:36
    #38833172
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[Ajax] Асинхронный или синхронный запрос.
ну вот городят...
через websocket решается и никакого гемора.
...
Рейтинг: 0 / 0
13.12.2014, 17:40
    #38833174
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[Ajax] Асинхронный или синхронный запрос.
FishHookJOINотправлять аякс запрос в синхронном режиме
Чудны твои дела, Господи.
AJAX - Asynchronous Javascript and XML,
синхронный - ajax, это шутка недели https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest#open()

asyncAn optional boolean parameter, defaulting to true , indicating whether or not to perform the operation asynchronously. If this value is false , the send() method does not return until the response is received. If true , notification of a completed transaction is provided using event listeners. This must be true if the multipart attribute is true , or an exception will be thrown.

Note : Starting with Gecko 30.0 (Firefox 30.0 / Thunderbird 30.0 / SeaMonkey 2.27), synchronous requests on the main thread have been deprecated due to the negative effects to the user experience.
...
Рейтинг: 0 / 0
13.12.2014, 17:45
    #38833176
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[Ajax] Асинхронный или синхронный запрос.
вадяну вот городят...
через websocket решается и никакого гемора.да успокойтесь Вы уже со своими вебсокетами...
человеку нужно к существующему решению банальную подгрузку по скролу прикрутить, а Вы ему на вебсокеты переписать все предлагаете, которых он не знает :)
...
Рейтинг: 0 / 0
13.12.2014, 18:47
    #38833199
Яростный Меч
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[Ajax] Асинхронный или синхронный запрос.
Я пока не понял суть проблемы.
Загрузили 20, добавили в список. Поскролили, загрузили еще 20 следующих, добавили.
Каждый запрос возвращает отсортированный массив.
...
Рейтинг: 0 / 0
13.12.2014, 18:57
    #38833201
JOIN
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[Ajax] Асинхронный или синхронный запрос.
Яростный МечЯ пока не понял суть проблемы.
Загрузили 20, добавили в список. Поскролили, загрузили еще 20 следующих, добавили.
Каждый запрос возвращает отсортированный массив.

Каждый запрос возвращает только один элемент этой прокрутки, т.е я делаю 20 запросов и результат каждого запроса вставляю в прокрутку. В момент выполнения этих запросов происходит нарушение последовательности объектов в скролле. Надеюсь так понятнее звучит? Чуть выше я написал почему не делаю один запрос который бы вернул 20 объектов сразу в скролл.
...
Рейтинг: 0 / 0
13.12.2014, 19:04
    #38833203
JOIN
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[Ajax] Асинхронный или синхронный запрос.
вадяну вот городят...
через websocket решается и никакого гемора.

Действительно никакого гемора, кроме как самого гемора с websocket (исключительно для меня), как и написали выше, я не так тестно знаком с websocket чтобы решить задачу предложенным вами методом. Думаю если я был бы на столько прошарен, тогда бы и вопроса не возникло. Спасибо за совет.
...
Рейтинг: 0 / 0
13.12.2014, 19:59
    #38833217
FishHook
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[Ajax] Асинхронный или синхронный запрос.
[quote JeStone]что именно вас насмешило?[/quote
Конкретно то, что механизм придуманный для асинхронных запросов (что отображается даже в расшифровке аббревиатуры) юзают противоестественно. Ты можешь штаны через голову надевать, твоё дело.
Но это неправильно.
...
Рейтинг: 0 / 0
13.12.2014, 20:12
    #38833223
Яростный Меч
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[Ajax] Асинхронный или синхронный запрос.
JOINЧуть выше я написал почему не делаю один запрос который бы вернул 20 объектов сразу в скролл.я видел эти буквосочетания, но не убедился.

Весь мир понимает, что один сгруппированный запрос быстрее и экономичнее 20 единичных, но мы, видите ли, всё равно не уверены.
...
Рейтинг: 0 / 0
13.12.2014, 21:53
    #38833267
Програмёр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[Ajax] Асинхронный или синхронный запрос.
JOIN,

Подумай... 1 запрос:
1. запрос к серверному скрипту
2. запрос от серверного скрипта к mysql
3. выборка и сортировака на стороне mysql с использованием индексов
4. отдача результата серверному скрипту
5. отдача данных клиенту

20 запросов:
1. запрос к серверному скрипту
2. запрос от серверного скрипта к mysql
3. выборка
4. отдача результата серверному скрипту
5. отдача данных клиенту
(первых 5 пунктов повторяем 20 раз)
6. отсортировать данные на клиенте, каким-нить баблсортом.


думай )) перечитай алгоритмы работы, и придёт просветление.
...
Рейтинг: 0 / 0
13.12.2014, 23:03
    #38833284
apapacy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[Ajax] Асинхронный или синхронный запрос.
JOINЯростный МечЯ пока не понял суть проблемы.
Загрузили 20, добавили в список. Поскролили, загрузили еще 20 следующих, добавили.
Каждый запрос возвращает отсортированный массив.

Каждый запрос возвращает только один элемент этой прокрутки, т.е я делаю 20 запросов и результат каждого запроса вставляю в прокрутку. В момент выполнения этих запросов происходит нарушение последовательности объектов в скролле. Надеюсь так понятнее звучит? Чуть выше я написал почему не делаю один запрос который бы вернул 20 объектов сразу в скролл.

Лучше бі поменять саму идею и перейти на возврат всей коллекции.

Но если уж нельзя иначе - привяжите порядковый номер к функции-обработчику или к запросу и меняйте содержимого готового фрагмента документа. (innerHTML or data)
...
Рейтинг: 0 / 0
14.12.2014, 09:13
    #38833329
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[Ajax] Асинхронный или синхронный запрос.
Яростный МечJOINЧуть выше я написал почему не делаю один запрос который бы вернул 20 объектов сразу в скролл.я видел эти буквосочетания, но не убедился.

Весь мир понимает, что один сгруппированный запрос быстрее и экономичнее 20 единичных, но мы, видите ли, всё равно не уверены.И я не уверен :)

В распределенных системах все зависит от того, что отображается и где, и как оно хранится.
...
Рейтинг: 0 / 0
14.12.2014, 09:21
    #38833331
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[Ajax] Асинхронный или синхронный запрос.
JOIN, а что у Вас за база? :)
...
Рейтинг: 0 / 0
14.12.2014, 10:56
    #38833355
JOIN
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[Ajax] Асинхронный или синхронный запрос.
skyANAJOIN, а что у Вас за база? :)
Mysql, тип таблиц MyISAM.

FishHook
Конкретно то, что механизм придуманный для асинхронных запросов (что отображается даже в расшифровке аббревиатуры) юзают противоестественно. Ты можешь штаны через голову надевать, твоё дело.
Но это неправильно.

Не пойму ваших споров. Суть не в том можно ли отправлять запросы синхронно (хотя судя по опции async , применять можно, но не желательно, как описано в мануалах), а в том что результат 20-ти запросов выстраивает цепочку объектов в неправильном порядке. Что вы прицепились к расшифровке AJAX? Если так здорово знаете аббревиатуру, может и подскажите алгоритм решения моей задачи?



Програмёр
думай )) перечитай алгоритмы работы, и придёт просветление.

Нет, тут ты не прав. Даже в плане целостности данных, надежнее будет отправить несколько запросов, чем наращивать колбасу на сервере потом выплёвывать в клиента. Согласен, что шагов взаимодействия клиент-сервер больше, но ИМХО 19 объектов успеют попасть в скролл, прежде чем оборвется связь с сервером, когда ни один объект не попадет в скролл в момент ожидания когда сервер возвратит 20 объектов в одном запросе. Это конечно грубый пример с обрывом связи на момент вставки 19 объекта, наверни ка таких ситуаций полно. Да и метод реализованный мной, я видел на других ресурсах, где так же отправляют по несколько запросов возвращая 20-30 позиций в скролл. Так что если и придет просветление, то точно не в эту сторону.
...
Рейтинг: 0 / 0
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / [Ajax] Асинхронный или синхронный запрос. / 25 сообщений из 31, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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