Aleksei
Max
представь todo list, при нажатий открывается новый экран с редактированием, по кнопке возвращаемся назад с новыми todos
Aleksei
Anton
ну да, это ж явно не назад
Peter
ну да, это уже не параметры навигации, а отдельный стейт
Peter
это тебе грубо говоря надо прокидывать в нужный слайд какой-нибудь колбек addTodo, который этот слайд будет дёргать, и в котором уже будет добавление данных в какой-то отдельный "стор"
Albert
Привет. Подскажите можно ли отменить сетевой запрос? Например при переходе с экрана на экран, если он не успел выполниться?
Peter
в случае с fetch, вроде нельзя
Albert
У меня Xhr
Alexey
Vyacheslav
Albert
Потому что меня надо очищать базу данных при выходе с приложения, но если данные не успеют прийти то будет корректное состояние бд, т.к. запросы асинхронные
Peter
Vyacheslav
Vyacheslav
На сервере весь код исполнится в любом случае
Peter
а, или база данных локальная, а не на серваке?
Albert
локальная
Peter
но вообще мне тоже больше импонирует идея с явной отменой запросов, чем просто игнорирование ответов сервера
Aleksei
в любом случае будет просто игнорирование
Alexey
если запрос отменен в тот момент, когда до сервера уже дошел запрос, ответ тоже проигнорируется
Aleksei
да даже если первый tcp пакет отправился то уже все
Alexey
я вижу смысл отменять запрос, если ты загружаешь на сервер 10мб, но для обычных 1Кб запросов, я бы вообще не отменял
Alexey
ушло и ушло, просто игноришь ответ и всё
Peter
Alexey
xhr.abort() просто закрывает TCP соединение и удаляет референс на xhr
Peter
в любом случае запрос забивает некий пул соединений, который может быть не резиновым
Alexey
он не отправляет на сервер команду "хей, серв, не выполняй запрос"
Alexey
Peter
да и в тупую, сделать xhr.abort() проще, чем выставлять какие-то флаги, которые говорят "игнорируй ответы от xhr", особенно если тебе надо игнорировать не все ответы, а ответ от конкретного запроса =)
Alexey
но я такого никогда не видел, честно говоря
Alexey
может, опыта мало ¯\_(ツ)_/¯
Aleksei
не понял как это рвет соединение
Alexey
ну xhr.abort убивает запрос
Alexey
там в спеке есть
Aleksei
он просто tcp соккет же закрывает
Aleksei
как сервак то узнает что соединение закрыто
Alexey
чем это отличается от закрытия соединения?
Ilya
Aleksei
ну расскажи как)
Alexey
сервер знает про дроп соединения только если это persistent connection
Aleksei
как?
Aleksei
вот есть tcp, как он поймет?
Alexey
да никак, Лёша прав
Aleksei
кто этим займется? маршрутизатор?
Alexey
сервер не знает
Alexey
что клиент убил соединение
Aleksei
вооот, это надо отправляет еще в догонку
Alexey
> Посылка серверу от клиента флага FIN
если этого не происходит, сервер не знает про завершение соединения
Ilya
Так-то еще таймауты есть
Alexey
таймауты есть на стороне клиента на ответ от сервера, а не на стороне сервера на запрос от клиента
Ilya
В tcp вообще-то на все есть таймаут
Ilya
А HTTP поверх него работает
Aleksei
да причем тут таймауты то вообще. речь о другом. о том что ушел запрос, потом оборвали соединение и якобы сервак должен понять об этом и прекратить работу над запросом
Aleksei
покажи мне хоть один сервак который так работает
Aleksei
блин ты писал хоть раз сервер?
Peter
Alexey
Ilya
Aleksei
камон, че херню несете. вот пришел http запрос, ты получил реквест и пошел в базу. как ты отменишь запрос? как ты вообще это поймешь?
Aleksei
и я не про статику сейчас говорю
Ilya
Peter
Aleksei
а может и не кильнуть
Kirill
зависит от конкретного кейса, а вообще в той же ноде есть событие abort, которое как раз возникает когда клиент вызывает .abort у xhr
Aleksei
так вы сами на уровне предположений говорите
Aleksei
Ilya
чем это хуже?
Ну да, трафик и скорость соединения же не ограничены
Ilya
И батарея
Alexey
так так так
Alexey
ребят
Alexey
стопэ
Aleksei
ну то есть три этапа на закрытие это не бесполезно?
Alexey
вот линк на w3.org, на часть про аборт
Alexey
https://www.w3.org/TR/2010/CR-XMLHttpRequest-20100803/#the-abort-method
Alexey
мы начали с этого, этим и закончим
Alexey
по линке не написано ничего про закрытие соединения