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