Rxjs против Lodash? может ли rxjs быть альтернативой lodash?

Я знаю определение и обязанности как rxjs, так и lodash, но я хочу знать: Могу ли я выбросить lodash, когда использую в своем проекте rxjs? потому что rxjs может работать синхронно и асинхронно (асинхронные и синхронные данные). Думаю, это может быть альтернатива lodash. Я прав?

В общем нет. Lodash имеет множество служебных функций, которых нет в RxJS, например, для строк, чисел и объектов.

4castle 30.12.2018 19:05

Через 4 слова и запятую: «нет, яблоки и апельсины».

quirimmo 30.12.2018 19:14

Во всяком случае, ты можешь. Только вам решать.

Igwe Kalu 30.12.2018 20:20

rx изначально предназначался для обработки асинхронных потоков событий. Теперь некоторые люди советуют использовать Observable практически для чего угодно (Promise, синхронная итерация). Для меня это звучит как ажиотаж ...

user10675354 30.12.2018 21:28
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
5
4
4 146
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Это зависит от того, что вы делаете. Некоторые задачи могут быть выполнены обоими, но многие задачи могут быть выполнены только одним из двух. RxJS не является альтернативой Lodash.

Обратите внимание, что у них совершенно разные миссии:

Он должен читать код на основе обратного вызова, который обрабатывает потоки событий, потому что rx не заменяет Promise.

user10675354 30.12.2018 21:31

@reify обратите внимание, что я не придумал их - они прямо с домашней страницы lilbs, но спасибо за замечание!

Nino Filiu 30.12.2018 22:13
Ответ принят как подходящий

Это совершенно разные вещи. Но я понимаю путаницу: они выглядят сопоставимыми, но что делать - совсем по-другому.

Lodash: можно сравнить с Linq в .Net. Все дело в навигации, объединении и управлении списки или перечислимые вещи.

Rxjs: речь идет не о списках, а о события, которые происходят с течением времени.

На самом деле имеет смысл использовать их оба:

// every time filter criteria is updated on the GUI, this will emit a new set of filtercriteria
let filterCriteria$ = new BehaviorSubject<FilterCriteria>({});
// this gets the list of employees, but will also emit a new set of employees when there are any changes
let mostRecentListOfEmployees$: Observable<Employee[]> = this.apiService.GetEmployees();

// using combineLatest will make sure that the map operator is executed every time the criteria or the list is updated
let filteredEmployees$ = filterCriteria$.pipe(
    combineLatest(mostRecentListOfEmployees$),
    map(([filterCriteria, list]) => {
        // this is pseudocode, not sure about the exact lodash syntax for filtering ...
        return _.filter(list, filterCriteria);
    })
)

Вы бы положились на Rxjs, чтобы повторно фильтровать список каждый раз, когда обновляются критерии фильтра и когда через API поступает новый набор сотрудников.

Lodash будет использоваться для фактической фильтрации массива.

Ваш графический интерфейс будет подписан на наблюдаемый filterEmployees $.

Если этот подход кажется незнакомым, это то, что называется Реактивное программирование: https://en.wikipedia.org/wiki/Reactive_programming

но в rxjs мы можем создать Observable из массива (данные синхронизации) с помощью оператора from, и после этого мы можем использовать многие операторы для этого наблюдаемого, такие как map, filter и ... так что кажется, что мы можем работать с массивом в rxjs .. но я понял, что с помощью lodash мы можем делать гораздо больше с массивами, числами и объектами, чего нельзя сделать с помощью rxjs ... из-за этого мы должны использовать lodash.

ali hasani 31.12.2018 12:36

Правда, и lodash, и rxjs имеют фильтр и оператор карты, и то, что они делают, очень сравнимо. Отсюда и путаница. Карта в lodash отображает каждый элемент в массиве, карта в rxjs отображает все, что испускается из объекта или наблюдаемого. Lodash - это инструмент, облегчающий работу с массивами. Rxjs - это инструмент, который позволяет вам заниматься реактивным программированием и имеет мало общего с массивами.

Davy 31.12.2018 12:39

Итак, последняя часть вашего комментария ОЧЕНЬ верна: для случая, о котором вы говорите, используйте lodash. Использование rxjs для управления массивом похоже на использование сварщика для приготовления супа.

Davy 31.12.2018 12:43

Значит, вы имеете в виду, что поведение другое, но результат тот же! Другими словами, в rxjs все является (превращается) в поток и должно излучаться (выделяемые элементы) даже в виде массива или одного числа, но в данных lodash не так, как в потоке.

ali hasani 31.12.2018 12:47

Большое спасибо, мой друг. Ваши ответы были хорошими.

ali hasani 31.12.2018 12:49

Пожалуйста. У меня была такая же путаница, когда я начал изучать rxjs, подозреваю, что многие люди :)

Davy 31.12.2018 13:43

Это совершенно разные вещи. RxJS использует концепцию реактивного программирования. Используя паттерн Observable и Observer, вы можете создавать потоки данных (промежуточный конвейер), в которых вы можете использовать операторы RxJS для работы с данными. Эти операторы делают то, чего не делает Lodash, что очень характерно для RxJS. Операторы возвращают наблюдаемые объекты, позволяющие правильно связать другие наблюдаемые операторы RxJS с результатом первого.

Я не очень часто использовал lodash, но предполагаю, что он не возвращает наблюдаемый объект, поскольку он специально создан для работы с массивами. Я немного использовал его, и он отлично работает, чтобы добавить функциональность для изменения массивов, но я предполагаю, что это не поможет операциям с потоком данных / конвейером, которые использует RxJS.

Другие вопросы по теме