Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Переход на url после окончания цикла (https://javascript.ru/forum/events/43784-perekhod-na-url-posle-okonchaniya-cikla.html)

ksa 20.12.2013 16:52

Цитата:

Сообщение от danik.js
А кто даст гарантию что последний запрос завершится в последнюю очередь?

По большему счету, нет никакой гарантии, что вообще что-то запишется на сервере...

ksa 20.12.2013 16:53

Цитата:

Сообщение от danik.js
Мой вариант смотрел?

Да. :yes:
Но так вышло, что уже после своего ответа. :D

danik.js 20.12.2013 17:43

Цитата:

Сообщение от ksa
По большему счету, нет никакой гарантии, что вообще что-то запишется на сервере...

Ну никто не мешает установить обработчик ошибок и как-то среагировать. Да и ошибка сервера - дело маловероятное, и не является штатным событием. Тогда как непоследовательность запросов - дело вполне обычное.

vas88811 21.12.2013 09:41

Цитата:

Сообщение от danik.js (Сообщение 288041)
А кто даст гарантию что последний запрос завершится в последнюю очередь?

Есть такая штука как $.when, никогда не пользовался, думаю она тут в самый раз:

var deferreds = [];
for (var i=0; i<profilesCount1; i++) {
    deferreds[i] = $.post("vbazy1.php", {
        id: data.response[i].to_id,
        to_id: data.response[i].date,
        from_id: data.response[i].from_id,
        text: data.response[i].text
    });
}



$.when.apply($, deferreds).done(function() {
    location.href = "http://www.site.ru";
});


http://api.jquery.com/jQuery.when/

Вот это вариант работает, но как-то не стабильно. Почему-то переход происходит и не все данные успевают занестись в базу. То есть переход произошел и в базу занеслось где-то 80% от того, что должно быть и каждый раз по-разному. С чем это может быть связано?

danik.js 21.12.2013 10:18

Цитата:

Сообщение от vas88811
С чем это может быть связано?

Не знаю. $.when гарантированно ждет пока завершатся все запросы. Я даже эксперимент провел, чтобы проверить это.
Может сервер отклоняет некоторые запросы, например из-за большой нагрузки? profilesCount1 - большое число?

vas88811 21.12.2013 10:35

Цитата:

Сообщение от danik.js (Сообщение 288163)
Не знаю. $.when гарантированно ждет пока завершатся все запросы. Я даже эксперимент провел, чтобы проверить это.
Может сервер отклоняет некоторые запросы, например из-за большой нагрузки? profilesCount1 - большое число?



profilesCount1 получается 100. Там цикл работает, он берет по 100 сколько потребуется раз. В моем случае например у меня 716 записи всего. Но заносится несколько меньше каждый раз, причем число всегда разное. А без перехода на url все четко работает. Каждый раз все 716

vas88811 21.12.2013 12:44

Заработало нормально. Спасибо. Видимо не успевало иногда из-за нагрузки.


Часовой пояс GMT +3, время: 23:57.