PDA

Просмотр полной версии : как прервать ajax-запрос, созданный jquery?


Дикс
26.05.2009, 15:42
возможно ли это?

MuXaJIbI4
26.05.2009, 16:09
а зачем такое может понадобиться?

astrologer
26.05.2009, 16:47
возможно ли это?
jQuery.ajaxSetup({
beforeSend: function(xhr, settings)
{
return false;
}
});

Дикс
26.05.2009, 16:54
мой скрипт таким образом реализует многопоточность
хотелось бы иметь над ней какой-то контроль

astrologer
26.05.2009, 16:57
мой скрипт таким образом реализует многопоточность:eek:
Можешь рассказать принцип? Интересно же

PaCo
26.05.2009, 19:22
:eek:
Можешь рассказать принцип? Интересно же
Естественно речь идет о ПСЕВДО много поточности, интерпретатор JS выполняет все операции атомарно, вот примерчик(там они громко это называют много поточностью, на самом деле это не так) - http://javascript.ru/blog/tenshi/mnogopotochnyi-yavaskript

KaZ@NoVa
26.05.2009, 21:55
мой скрипт таким образом реализует многопоточность
хотелось бы иметь над ней какой-то контроль
По моему если уже чтото отправлено, то это можно отвести в сторону только на стороне сервера.
попробуй в случае отмены писать ему какой нибудь запрос типа
(cancel,id);
id - код нужного запроса.
но это реально заморочно очень)

astrologer
26.05.2009, 22:11
Естественно речь идет о ПСЕВДО многопоточности, интерпретатор JS выполняет все операции атомарно, вот примерчик(там они громко это называют много поточностью, на самом деле это не так) - http://javascript.ru/blog/tenshi/mnogopotochnyi-yavaskript О, вообще-то, всё гораздо интереснее.
К сожалению, не могу найти сейчас обсуждение по теме - но ход мыслей был примерно такой:
1. JS выполняется строго последовательно, без исключений
2. Пришедший ответ с сервера (xhr) иногда может прерывать исполняющийся код. Функции никогда не прерываются.
3. Функции иногда прерываются.
4. Никогда не полагайтесь на то, что один кусок кода будет исполняться до или после другого.

Что касается многопоточности - ближайший её аналог будет доступен в виде Web Workers (http://www.whatwg.org/specs/web-workers/current-work/).
Сейчас опера и, похоже, только она даёт возможность реализовать многопоточность, запустив код во фрейме. (Судя по всему, исполняется действительно параллельно)

KaZ@NoVa, написано "прервать" - значит, всё ещё в процессе и можно вполне вызвать метод abort

Хотя, наверное, Дикс лучше знает, что он подразумевал

Дикс
27.05.2009, 09:05
как правильно сказали на другом ресурсе - не прервать запрос, а перестать ждать от него ответа.
т.е. запустил я 50 одинаковых соединений. все они закончат выполняться хз когда и каждый из них может повлиять своим ответом на скрипт тогда, когда это уже не надо.

в фф я открываю файрбаг и вижу там открытые xhr
если нажать escape - они все останавливаются и помечаются как неоконченные.
примерно этого мне хотелось бы добиться программно.

я думал есть какой-то способ это сделать малой кровью.