tôi đang học RxJS bằng cách đọc hướng dẫn này http://reactive-extensions.github.io/learnrx/
.Phương thức `map` có nghĩa là gì trong RxJS?
Tôi khó có thể hiểu được phương thức map của Observable
. Phiên bản Array
của map
thực sự đơn giản và dễ hiểu. Tôi không có ý tưởng về những gì chính xác map
nghĩa trong trường hợp của một Observable
(và tại sao nó có một bí danh tên select
?!).
Dưới đây là những gì các tài liệu hướng dẫn nói với tôi. Có thể không hữu ích cho hầu hết người mới bắt đầu ...
Chiếu từng phần tử của một chuỗi quan sát thành một biểu mẫu mới bằng cách kết hợp chỉ mục của phần tử. Đây là bí danh cho phương thức chọn.
Tôi không hiểu map
trong ngữ cảnh event
. Ví dụ: mã bên dưới hoạt động chính xác những gì tôi mong đợi. Tôi nghĩ đến đoạn mã này như sau: "Nghe click-event
từ sự kiện-stream của #btn
".
var btnClicks, observable;
btnClicks = Rx.Observable.fromEvent($('#btn'), "click");
observable = btnClicks.subscribe(function(e) {
\t console.log(e);
});
Nhưng điều gì sẽ xảy ra khi nó trở nên để điều này ??
var btn2Clicks, btnClicks, observable;
btnClicks = Rx.Observable.fromEvent($('#btn'), "click");
btn2Clicks = Rx.Observable.fromEvent($('#btn2'), "click");
observable = btnClicks.map(function(e) {
return btn2Clicks;
}).subscribe(function(e) {
console.log(e);
});
Những gì tôi nghĩ là sử dụng map
để biến đổi một bộ sưu tập của một nhấp sự kiện vào một bộ sưu tập của sự kiện thu. Các filter
là dễ hiểu, nó cũng giống như từ filter
phương tiện, đi sự kiện duy nhất tôi quan tâm, và bỏ qua những người khác. Nhưng làm thế nào về map
trong bối cảnh event
? Nếu nó có nghĩa là 'chuyển đổi một bộ sưu tập sang một bộ sưu tập khác' giống như phiên bản mảng, tại sao nó vẫn cháy khi #btn
nhấp vào ??
Ý tôi là tôi đã lập bản đồ cho một bộ sưu tập khác, bây giờ nó không còn là bộ sưu tập của sự kiện nhấp chuột #btn
mà là bộ sưu tập mới của một thứ gì đó ... Nhưng nó vẫn cháy khi #btn
nhấp vào không hợp lý với tôi .
Cảm ơn! Bây giờ tôi biết lý do tại sao một số phương pháp có một bí danh. Nhưng tôi vẫn không thể hiểu được thao tác 'map' trong ngữ cảnh' sự kiện'. Tôi đã chỉnh sửa câu hỏi, hy vọng bạn có thể trả lời cho tôi ý nghĩa của bản đồ khi xử lý các sự kiện. – yaquawa
@Brandon nhưng khi nào chức năng bản đồ lặp lại? Ý tôi là, khi bạn ánh xạ trên một mảng, bạn đã có tất cả các phần tử trong mảng và nó lặp lại các log (n) lần qua từng phần tử. Khi bạn .map trên một Observable, có quan sát đã nhận được tất cả các phần tử (và nó lặp qua mỗi phần tử) hay các hàm (bên trong khối bản đồ) hoạt động trên mỗi phần tử (sự kiện) khi nó đến? Vì vậy, đối với Observables, bản đồ có hoạt động như một trình lặp (giống như nó làm cho các mảng bình thường) hay là .map hơn một trình trang trí cho mỗi sự kiện (phần tử) đi qua? –
@BenjaminMcFerren Quan sát được dựa trên đẩy (nguồn * đẩy * dữ liệu tới người đăng ký (thông qua bất kỳ toán tử nào như 'bản đồ') khi dữ liệu có sẵn). Vì vậy, có, trong cách nói của bạn, các nhà khai thác quan sát giống như trang trí sự kiện. – Brandon