Według źródeł underscore.js (https://github.com/jashkenas/underscore/blob/master/underscore.js):Dlaczego metoda łańcuchowa() metody Underscore.js nie jest leniwy?
// Start chaining a wrapped Underscore object.
chain: function() {
this._chain = true;
return this;
},
// Extracts the result from a wrapped and chained object.
value: function() {
return this._wrapped;
}
łańcuch() i wartość() funkcje są tylko proste otoki dla obiektu podkreślenia.
Więc jeśli używam następujące budowy:
_.chain(someCollection)
.map(function1)
.map(function2)
.map(function3)
.value()
Podkreślenie stworzy dwie kolekcje pośrednich i wykona trzy wyliczeń.
Dlaczego metody chain() i value() nie są zaimplementowane jako leniwe wartościowane, tak jak LINQ implementuje swoje metody? Na przykład ten łańcuch może być traktowany jako:
_.chain(someCollection)
.map(function(x){
return function3(function2(function1(x)));
})
.value();
Czy są jakieś problemy związane z JS dla tego rodzaju realizacji?