если есть Cubit? Я пользовался и тем и другим. Знаю что Bloc это Cubit расширенный эвентами, но не особо понимаю зачем это нужно. По сути приходится только больше кода писать, вместо того чтобы просто сделать в кубите методы аналогичные эвентам. При этом часто вижу что в добавок к эвентам в блоке делают одноименные методы которые делают add(event). Ну и смысл тогда в этом? Асинхронность эвентов перед методами? Но можно сделать асинхронный метод и не ждать его завершения если не нужен результат. В то же время эвент не может вернуть результат, а метод может - это преимущество.
Yakov K., [02.03.2022 2:53] Особенно логику троттлинга и дебаунсинга поисковых эвентов будет очень удобно на нем делать, да 🅵🅾️🆇, [02.03.2022 2:54] а уж как весело с консистентностью данных - мммм 🅵🅾️🆇, [02.03.2022 2:54] когда два эвента паралельно запускаешь и получаешь состояние гонки с абсолютно дэбильными состояниями причем еще и отрабатывающими не обязательно в порядке запуска
> троттлинга и дебаунсинга поисковых эвентов не знаю что это > когда два эвента паралельно запускаешь странно, у меня ни разу не было такой необходимости
https://medium.com/nuances-of-programming/%D1%87%D1%82%D0%BE-%D1%82%D0%B0%D0%BA%D0%BE%D0%B5-throttling-%D0%B8-debouncing-4f0a839769ef
Дельная статья. Понятно. Но мне такое не попадалось...
Проблема в том что на кубите так нельзя будет сделать, т.к там методы, а не эвенты эвенты это стрим, в котором можно модифицировать саму логику обработки данных через stream_transformer/bloc_concurrency Я например имею блок пагинации, и чтобы когда я долистал до конца списка оно не подгружало миллион раз инфу, я накладываю трансформер на стрим эвентов - в моем случае троттлинг, который позволяет мне только один раз за небольшой промежуток времени отправить эвент А через кубит у меня бы летело куча методов подгрузки без остановки, и это никак не исправить..
Понятно, но это такая специфичная задача. Для большинства простых интерактивностей хватит и кубита...
Объясняю, что это: дебаунс — это когда ты быстро набираешь текст на клавиатуре — а обрабатывается в итоге только один ивент, с итоговым текстом. Когда ты набрал символ, и прождал, допустим, 500 мс, он решает, что ты закончил. троттлинг — наоборот. Когда ты несколько раз тапаешь на кнопку — но сработает только первый раз, а дальше кнопка, например, на 2 секунды блокируется. Чтобы исключить несколько случайных нажатий.
Хм, а как же до появления блока решали вопрос с дебаунсом и троттлингом?
Таки там не на блоке все завязано, а на стримах
Обсуждают сегодня