#React, #JS, #Помощьтупым При обновлении значения поля, на сервак уходит запрос, включающий это самое значение (valueSell). Потом приходит ответ с числом высчитанным на основе этого valueSell. Проблема в том что valueSell может меняться по нескольку раз в секунду, а значит что может уйти 10 запросов, а последним придет ответ с valueSell из шестого запроса, например. Я бы сравнивал valueSell с которым запрос уходил и valueSell нынешнее, на из-за замыкания оно всегда будет одинаковым.
Я правильно понимаю, для работы всех этих реактивных жс фреймворков надо нахлобучить гору говна на бекенд, которая бы собирала из ошметков здоровенных как слоны фреймворков а так же "плагинов", тянущих за собой миллионы зависимостей некую кашицу, которую уже потом только вставляло в эдакий скомпилированный код, который бы наконец выдавался вместе с ШТМЛ бэкэндом?
>>251192432 Как сделать так чтоб гарантированно применялся ответ из последнего отправленного запроса, даже если с сервера он придет не последним?
>>251192461 Когда классовые компоненты были, то это такой проблемы вообще не стояло. Но с функциональными вот такая вот хуета. Я просто не верю что нет нормального способа это порешать, без создания внешнего компонента или установки библиотеки.
>>251192482 Спс, а то я в /web смотрел, а там мертвые все
>>251191774 (OP) Подожди, я правильно понял, что для тебя нормальна ситуация, что valueSell меняется по множеству раз в секунду?
На счет того, как помочь. Честно - не приходилось с таким сталкиваться. Не уверен, что делать искусственную задержку будет корректным решением. Дай мне самому подумать
>>251192751 >Как сделать так чтоб гарантированно применялся ответ из последнего отправленного запроса, даже если с сервера он придет не последним?
Так блять складывай промисы в очередь или эррэй и оттуда бери последний блять. Но у тебя приложуха хуита какая то, нахуй тебе нужно 6 запросов в секунду отсылать, шиз?
>>251192682 >>251192368 >Я правильно понимаю, что для того чтоб обойти замыкание, мне нужно отдельную библиотеку ставить? нет. Замыкание обходится через блок-скопед переменные, либо созданием новой области видимости
var functionsList = []; for(var i = 0; i < 10; i ++) { functionsList.push((function(i){ return function() {return i;} })()) } console.log(functionList[0]());
var functionsList = []; for(let i = 0; i < 10; i ++) { functionsList.push(function() {return i;}) } console.log(functionList[0]());
>>251191774 (OP) Нахуй выбрось и перепиши с нуля. Если у тебя приложение шлет по 6 запросов в секунду на изменение какой то переменной, то написал ты хуйню
>>251192834 Эррэй это самое очевидное решение, но тогда непонятно за какой промежуток времени он должен данные компоновать в массив. Например промежуток в полсекунды. Типо прошло полсекунды, число поменялось 5 раз. Значит массив с 5 промисами. И потом он продолжает также по пол секунды отмерять и следить за остальными промисами? Ну звучит как какая-то хуетень. Я согласен, что это реально хуйня какая, когда значение изменяется быстрее, чем в секунду и приходится это на бэк отправлять. мимо
>>251193399 Наверно. Хороший вопрос, на самом деле.
Вообще я вижу лёгкий и тяжелый путь
Лёгкий: использовать abort controller Тяжёлый: генерировать уникальный id для последнего запроса с фронта и отправлять его на сервер. Приходит ответ от сервера (внутри которого есть этот уникальный id). Потом сравнивается, что если у ответа сервера такой же уникальный id, как у последнего запроса на сервер - значит это ответ на последний запрос на сервер. Как то так. Уверен можно ещё что то придумать
>>251193818 >Наверно. Хороший вопрос, на самом деле. загугли throttling или debouncing в зависимости от твоей задачи там реализации на чистом js довольно простые
>>251194110 Ну я не писал ебанутые вопросы на дваче, и учился не проходя деньги на мамкины курсы и реально горел профессией, а не потому что "на двачи сказали, что айтишники 300к\наносек получают"
>>251194173 Да я не оп. Я просто предложил. Дебаунсинг и тротлинг ему не шибко подойдёт, учитывая, что у ОПа данные меняются меньше, чем за секунду, притом, как я понял, ему нужны все эти данные
Всë зависит от того, нужно ли тебе все значения обрабатывать или нет. Можно сделать какую нибудь ебучию паузу, чтобы запросы обрабатывались 1 за 10 секунд. При этом если запрос не обработался, то нех ещë в сервер вливать данные. А так можно построить очередь на сервере.
>>251194267 >учитывая, что у ОПа данные меняются меньше, чем за секунду, притом, как я понял, ему нужны все эти данные интересно что это за кейс, где такая логика может использоваться?
>>251194222 У тебя просто не было где можно непринуждённо спросить, в этом вся разница.
Но я согласен, что сосач та ещё помойка для задавания вопросов. Тут иногда шибко умные люди сидят с раздутым чсв. Помню как тут анон искал возможное решение в виде пакета для React Native для работы с фотографиями, а ему сказали мол, "ты дебил, сам не можешь что ли, какие пакеты"? И это притом, что отвечают люди, которые очевидно в сабже не шарят и не понимают, что к bitmap у React Native нет доступа, а библиотека для него (реакт нейтива) пишется с помощью нативных модулей на Java и Swift. И вот такой ответ дать в JS конфе. Ну это просто верх маразма. Помню были ещё случаи, но этот особенно ярко запомнился
>>251192682 >>251193297 Вот норм ответ, спс. С костылями и чуть через жопу, но получилось. Сейчас постараюсь нормально сделать.
>>251192808 >>251193130 >>251194651 Есть формы где запрос уходит с каждым изменением поля, потому что вычисления на серваке происходят. Например пользователь вводит число в инпут и после каждого измененного символа идет запрос. А так он может просто рукой провести по клаве и ебануть несколько запросов в секунду.
>>251192834 Ты с реактом не работал, теоретически пиздишь, да?
>>251193996 Советуй им лучше дрочить меньше. Зрение улучшится и настроение спокойнее будет. Вопрос по реакту, блядь. Нахуй мне твой ангуляр? Блядь, тред не читает, свое мнение сует.
>>251194110 Я мидл, лол. Просто в первый раз такая проблема возникла. Обычно ее через сравнение уходящих и актуальных значений решал. А тут перешел на функциональные компоненты с запозданием.
>>251195151 >Я мидл, лол. Просто в первый раз такая проблема возникла. Обычно ее через сравнение уходящих и актуальных значений решал. А тут перешел на функциональные компоненты с запозданием. Ответ не тебе был, но не суть. Я так понял ты ОП. Расскажи что для мидла знать надо?
>>251195290 Не хочу быть очевидным, но тебе стоит открыть вакансии в твоем городе/области, выбрать свой язык и посмотреть. Если конкретно в моем случае, то HTML,CSS,JS,React,Redux и сопутствующая хуйня в виде Webpack, Git, Figma, Zeplin, Photoshop. Этот минимум. Плюс очень желательно знать английский, там зп больше и требования меньше одновременно. Но щас уже требуют node.js,next.js и так далее.
>>251195151 >Есть формы где запрос уходит с каждым изменением поля, потому что вычисления на серваке происходят. Например пользователь вводит число в инпут и после каждого измененного символа идет запрос. А так он может просто рукой провести по клаве и ебануть несколько запросов в секунду. >>251195151 >Нужно было все. Иначе бя я столько запросов не отправлял. противоречиво, зачем нужно обрабатывать каждый инпут на сервере, если пользователю интересен результат последнего?
В общем ответ вроде найден. Юзай АБорт контроллер, ОП. Но если пользуешься axios, то у них немножко другая фегня (axios.CancelToken.source()). Я пошёл спать
>>251195468 А, прикольно. Но в принципе я это знаю, даже чуть побольше. Но я вротендер, для ssr некст не трогал, а сервера испытательные для себя писал на ноде и экспрессе. Тогда балдёж, посеба за ответ
>>251195632 >Как на серваке отличишь последний от предпоследнего? Запрос стоит на событие onChange ну так оберни его в функцию с таймером, которая сбрасывает его, если приходит новый евент и делает запрос, если не пришел в отведенный таймаут так =на сервер уйдет последний инпут
>>251196154 >ты не пынямаешь одной ложкой я гавно ковыряю а другой ложкой я его ем! Разные инструменты! Ты когда всякую хуйню вроде MVC реализуешь - ты делаешь это все еще в рамках синтаксиса жопа скрипта
блять, даже советовать не хочется ничего. 6 раз в секунду блять отправляется запрос, ты долбаеб вообще там? ты нахуй насрал? Или делай такие вычисления на клиенте, или не делай вообще. А если у клиента 5-10мб скорость, сколько он это все ждать будет?
>>251195468 >Если конкретно в моем случае, то HTML,CSS,JS,React,Redux и сопутствующая хуйня в виде Webpack, Git, Figma, Zeplin, Photoshop. Этот минимум. сколько плотют за такой набор?
Сеньер 300к в секунду в треде На пике паттерн с флагом в юзеффекте из ДОКУМЕНТАЦИИ. https://reactjs.org/docs/hooks-faq.html Через флаг ты можешь определить какой запрос был последний.
Слабенький мидл ИТТ, стейт-машину юзать предлагали? Просто при отправке запроса ставишь стейт "лоадинг" пока не выполнится промис, а при выполнении меняешь на "успех" или "фейл" смотря что вернёт промис.
Я мелкие приложения давно не писал, поэтому у меня в каждом проекте есть редукс, и я там всю эту логику по дефолту реализую через thunk'и и у меня в принципе такой проблемы не может возникнуть.