2015-04-17 37 views
15

Tôi đã nghe từ nhiều ng-loa khác nhau như thế nào $ xem là nguy hiểm cho hiệu suất của ứng dụng của bạn. Tôi đã tự hỏi nếu có ai đã so sánh hiệu suất của Rxjs 'Observable với đồng hồ $ trong một ứng dụng AngularJS. Tôi biết rằng các Đài quan sát sẽ là một phần của Angular 2.

+0

Tôi cũng muốn biết thêm về điều đó – Ant

Trả lời

21

Hai cơ chế quan sát các thay đổi vốn đã khác nhau.

$watch là sức mạnh vũ phu, cơ chế dựa trên kéo. Trường hợp người quan sát đang hoạt động và (nói chung) cần truy cập vào từng đối tượng/biểu hiện được quan sát sau khi có bất kỳ thay đổi nào xảy ra. Chắc chắn càng nhiều để quan sát toàn bộ quá trình chậm hơn.

Observable triển khai cơ chế dựa trên đẩy. Observer là thụ động và được thông báo khi có gì đó thay đổi. Việc triển khai đúng cách nó cho phép truyền bá nhiều thay đổi thông minh hơn nhiều.


Từ những gì tôi biết, sử dụng Observable s ở góc 2.0 là không bắt buộc, nhưng khuyên. Hơn nữa, góc 2.0 sẽ thực hiện luồng dữ liệu một hướng tương tự như flux. Thay đổi dữ liệu truyền chỉ xuống dưới trong DOM - một thành phần có thể trực tiếp quan sát/phụ thuộc vào dữ liệu của tổ tiên của chúng chứ không phải con cháu của chúng. Sau khi thay đổi, có một sự đảm bảo rằng chỉ một số subtree của DOM cần cập nhật. Trong hầu hết các trường hợp, cây con này sẽ nhỏ hơn nhiều so với toàn bộ DOM.

a great video từ điểm chuẩn ng-conf 2015 góc 1x, phản ứng và góc 2.0. (không chắc chắn nếu nó sử dụng quan sát mặc dù)


Một điều cuối cùng về Observable: nó cung cấp cách hơn mô tả ở trên và nó là một cách tuyệt vời để đối phó với những sự kiện không đồng bộ.

Các vấn đề liên quan