Tài liệu về Lodash nói rằng nó supports lazy evaluation. Từ thử nghiệm của tôi, chuỗi dưới đây đang được đánh giá 100 lần thay vì 10. Tôi đang sử dụng phiên bản 3.10.1.Đánh Giá Lười Biếng Không Hoạt Động Trong Lodash
_(_.range(100))
.map(function(x) {console.log(1); return x; })
.take(10)
.value()
Bạn có thể thấy rằng chúng tôi in bảng điều khiển 100 lần bên trong map
, thay vì 10 lần tôi mong đợi. Hãy xem sự cố tại đây: https://jsfiddle.net/07utwk6y/
Tôi đang làm gì sai? Làm thế nào tôi có thể làm cho điều này đánh giá uể oải?
Cập nhật: Điều này dường như là hồi quy trong Lodash. Tôi đã thử nghiệm cách làm việc này trên các phiên bản và đã xem qua kết quả như sau:
Version 2.4.2: 100 lần https://jsfiddle.net/4Lq7z5xL/
Version 3.0.0: 10 lần https://jsfiddle.net/fd6g6un5/
Phiên bản 3.9.0 10 lần https://jsfiddle.net/ju8rppee/
Phiên bản 3.10.0: 100 lần https://jsfiddle.net/x1g13oo8/
Có vẻ như giới hạn đã bị xóa: https://github.com/lodash/lodash/commit/9d3047001d38a03f84c9afb86b5272d8c9533e5e –