Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Прервать синхронный запрос. (https://javascript.ru/forum/misc/50206-prervat-sinkhronnyjj-zapros.html)

livelover 16.09.2014 18:49

Прервать синхронный запрос.
 
Как выставить таймер XMLHTTPReques? синхронному.
Или как убить синхронный запрос по таймеру?

Возможно?

tsigel 17.09.2014 10:16

http://xmlhttprequest.ru/
Я так понимаю что прервать можно только асинхронный запрос.

Вообще если вам понадобился синхронный запрос - скорее всего вы что-то делаете не так.

Aetae 17.09.2014 15:49

livelover, вроде можно поставить таймаут, но не везде). Сам не пробовал, ибо см. выше.
Ага, см. свойство timeout: https://developer.mozilla.org/en-US/..._Compatibility

..upd хотя нет
Цитата:

Note: You may not use a timeout for synchronous requests with an owning window.
Так что выкидывай свои синхронные запросы на помойку.

tsigel 17.09.2014 15:50

Aetae,
А как? Если запрос синхронный то все таймауты отработают после запроса? Или имеется в виду таймаут самого запроса?

Aetae 17.09.2014 16:01

tsigel, имеется ввиду таймаут самого запроса. Но видать его реализировать поленились, потому это просто биндинг на обычный сеттаймаут и синхронными запросами не работает.(имхо, нафиг он тогда нужен - не понтно)

petya 18.09.2014 00:43

Цитата:

Сообщение от Aetae
Но видать его реализировать поленились

Как можно реализовать прерывание синхронного кода в однопоточном языке? О чем ты вообще говоришь?

Aetae 18.09.2014 00:48

petya, на более низком уровне, вестимо.

petya 18.09.2014 01:02

Цитата:

Сообщение от Aetae
petya, на более низком уровне, вестимо.

Ну, вот допустим, у нас есть блокирующая операция, которая заблокировала поток. Откуда ее можно прервать? Как это должно выглядеть, я не пойму? Ее заранее прерывать чтоли надо? Все отложенные асинхронные функции становяться в очередь. Пока блокирующая операция не освободит поток они не отработают. Если такое возможно будет сделать, ты фактически уже будешь запускать прерывание в другом потоке, это уже не однопоточная модель. Или я что-то не понимаю

tsigel 18.09.2014 01:12

petya, Aetae имел в виду что прирывание должно происходить нативно методом браузера (который уже отнють не однопоточный) методами самого реквеста, но как выяснилось что почти ни один браузер не доделал этот метод.

livelover 19.09.2014 19:29

Вообще вопрос возник из такой задачи:
по window.onbeforeunload надо плать запрос на хост, который принимает запросы но вообще на них не отвечает.

*Если запрос Асинхронный, то запрос тупо может неуйти, страница уже закрывается.
* Если запрос Синхонный, то броузер долго весит, ждёт запроса. А его нет и не будет.
Вот так вот...
*Если син


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