Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 23.01.2009, 22:33
Сеня
 
Сообщений: n/a

Паралельное выполнение одной и той-же функции
Здравствуйте,

Есть функция которая делает запрос к серверу и получает от него ответ и передаёт дальше, - с этим проблем нет.

Нужно эту функцию вызвать два раза; то есть пока выполняется первый экземпляр, - выполняется второй. - вот тут то и начинаются проблемы.

У функции есть ещё параметр timeLimit
ну то есть она какое то время ждёт ответа от сервера, и если его не получает в
заданный промежуток времени, - то сообщает об ошибке.
в начале функции устанавливается таймер:
var myAJtimer= setTimeout(onTimeEnd,timeLimit);

ну а в конце если ответ пришёл нормально то:
window.clearTimeout(myAJtimer);

я подозреваю что проблема как раз в таймерах, т.к.:
ответы от двух запросов приходят нормально, но по таймауту появляется ошибка,
что сервер не ответил, - то есть таймер не останавливается.

Итак вопрос: Так что же из моих предположений верно? - То есть могут ли пересекаться значения, и если да, то как сделать что бы область видимости переменных не пересекалась.

если не понятно объяснил, спрашивайте, попытаюсь рассказать лучше.
Ответить с цитированием
  #2 (permalink)  
Старый 24.01.2009, 00:16
Аватар для Илья Кантор
Администратор
Отправить личное сообщение для Илья Кантор Посмотреть профиль Найти все сообщения от Илья Кантор
 
Регистрация: 25.05.2007
Сообщений: 1,221

Javascript обычно выполняется в 1 поток, то есть - только одна функция в один момент. Все остальные события ждут..
Ответить с цитированием
  #3 (permalink)  
Старый 24.01.2009, 16:14
Сеня
 
Сообщений: n/a

хорошо, спасибо, буду искать ошибку.
Ответить с цитированием
  #4 (permalink)  
Старый 24.01.2009, 20:59
Сеня
 
Сообщений: n/a

хм.. видимо не в случае ajax..
то есть не ждёт ответа от сервера, если её запустить ещё раз.

посмотрел на время;
условно:
GET - это функция с параметром GET до сервера
POST - эта же функция но с параметром POST (то есть время выполнения дольше)

вот результат:

start POST - время 0 милисекунд
start GET - время +7 милисекунд
end GET - время +36 милисекунд

firebug пишет
время выполнения POST - 48 ms - причём ответ пришёл верный
GET - 30 ms - тут тоже нормальный ответ

результат выполнения POST теряется... завершается по таймауту
но firebug то показывает верный результат.. да и по факту на сервере происходят нужные изменения..

есть идеи?
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Авто выполнение функции Itachi Общие вопросы Javascript 18 03.10.2008 16:48