Rxjs против Lodash?Может ли rxjs быть альтернативой для lodash? - PullRequest
0 голосов
/ 30 декабря 2018

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

Ответы [ 3 ]

0 голосов
/ 31 декабря 2018

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

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 будет использоваться для фактической фильтрации массива.

Ваш GUI подпишется на фильтр FilterEmployees $ observable.

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

0 голосов
/ 06 августа 2019

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

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

0 голосов
/ 30 декабря 2018

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

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

...