La documentazione di Lodash dice che è supports lazy evaluation. Dai miei test, la catena sottostante viene valutata 100 volte anziché 10. Sto usando la versione 3.10.1.Lazy Evaluation non funziona in Lodash
_(_.range(100))
.map(function(x) {console.log(1); return x; })
.take(10)
.value()
Si può vedere che il risultato della stampa alla console 100 volte all'interno map
, piuttosto che le 10 volte mi sarei aspettato. Controlla qui il problema: https://jsfiddle.net/07utwk6y/
Cosa sto facendo male? Come posso fare questo valutare pigramente?
Aggiornamento: Questa sembra essere una regressione in Lodash. Ho provato come funziona tra le versioni e sono imbattuto i seguenti risultati:
Versione 2.4.2: 100 volte https://jsfiddle.net/4Lq7z5xL/
Versione 3.0.0: 10 volte https://jsfiddle.net/fd6g6un5/
Versione 3.9.0 10 volte https://jsfiddle.net/ju8rppee/
Versione 3.10.0: 100 volte https://jsfiddle.net/x1g13oo8/
Sembra che il limite sia stato rimosso: https://github.com/lodash/lodash/commit/9d3047001d38a03f84c9afb86b5272d8c9533e5e –