Подскажите зачем нужен 'LodashWrapper' ?

Не понятно зачем нужна обертка ‘Lodash’ над данными, что удалось найти это вместо функции ‘compose’ Ramds.js так ?


Вот пример: http://prntscr.com/kdvsj7
Или зайти на открыть консоль вставить вот этот код:
const data = [{id: 1, name: ‘Alex’}, {id: 2, name: ‘John’}]
console.log('pure data ', data)
console.log('Lodash wrapper ', _(data))
Спасибо!

Чтобы можно было chain-ить вызовы методов. Плюс wrapper - ленивый. Т.е. результат всех преобразований, которые применены к wrapper-у будет вычислен только в момент обращения к значению.

https://jsfiddle.net/s4c2mxek/4/

Обрати внимание что console.log-и появляются только после клика по кнопке

UPD
Обновил пример https://jsfiddle.net/s4c2mxek/6/ чтобы вызов value() был явен

1 лайк

Спасибо, не совсем понятно, как происходит работа ‘chain’:

var youngest = _.chain(users)
  .map(function(chr) {
    console.log('evaluated when .value is called')
    return chr.user + ' is ' + chr.age;
  })

youngest.first() //=> так не работает, возвращает обертку, работает записать перенести внутрь функции и вызвать эту функцию или вызвать в конце цепочки вызовов value()
Спасибо.

Вот это тебе нужно. В примере что я кинул неявно вызывается valueOf, который наверняка реализован так же как и value(), когда я конкатенировал строку с результатом .first().

Обновил пример https://jsfiddle.net/s4c2mxek/6/ чтобы вызов value() был явен

Спасибо, а есть примеры например с Ramda.js или Immutable.js с ленивыми вычислениями?

У меня нет. Этот пример я взял из документации лоудаша. Запили отдельный пост с таким вопросом - может у кого будет ответ.

1 лайк