Vì vậy, sự khác biệt có vẻ là: defer
là tốt khi bạn có cái gì đó tạo/trả về một thể quan sát được đã có, nhưng bạn không muốn nó quá trình đó xảy ra cho đến khi đăng ký.
create
là tốt khi bạn cần phải tự bọc một quy trình không đồng bộ và tạo một quan sát. Sáng tạo đó là cũng bị hoãn cho đến khi đăng ký.
Nói một cách khác:
defer
là một nhà điều hành cho phép thành phần thu nhập hoãn lại của chuỗi quan sát được.
create
là triển khai tùy chỉnh chuỗi có thể quan sát được (nơi tạo ra được trì hoãn cho đến khi đăng ký). Vì vậy, nếu bạn có một tình huống mà bạn có thể sử dụng just
để tạo ra một Observable
từ một số kết quả/giá trị hoặc bạn có lớp API mạng trả về yêu cầu Observable
của yêu cầu, nhưng bạn không muốn yêu cầu đó bắt đầu cho đến khi đăng ký. defer
sẽ phù hợp cho các trường hợp đó.
Nếu bạn có một lớp mạng API mà không trở lại một Observable
cho một yêu cầu, nhưng mà bạn cần một giao diện Observable
đến, bạn có thể sử dụng create
. Điều đó Observable
trình tự vẫn sẽ không được tạo ra cho đến khi đăng ký mặc dù. Nếu bạn muốn cuộc gọi mạng đó khởi động bất kể đăng ký thì bạn sẽ sử dụng một cơ chế khác, chẳng hạn như Subject
, có khả năng phát lại.
Nguồn
2017-01-24 16:10:11