Caching Http Request trong Angular với Rxjs
Thông thường khi làm việc với ứng dụng, chúng ta tạo HTTP request để truy cập data từ API. Đôi khi chúng ta gọi đến một API nhiều lần trong một khoảng thời gian nhất định, caching được sử dụng để tránh việc lặp lại request đến server. Có nhiều cách để thực hiện việc caching, trong bài này tôi sẽ sử dụng RxJs bởi vì nó đơn giản.
Đầu tiên chúng ta khởi tạo project cùng 2 component là ImageListComponent ImageDetailComponent. Hai component này có chung nhiệm vụ hiển thị list các image ra màn hình
Bắt đầu bằng việc tạo Angular service, HttpClient service trong angular gọi đến link api http://5c6e54864fa1c9001424233c.mockapi.io/api/image (bạn có thể tạo api test ở MockAPi)
Như ban đầu chúng ta đề cập, 2 component trên sẽ cùng gọi đến cùng một API, vì thế trong hàm getImageList() chúng ta sẽ thực hiện việc lưu trữ data bằng cách subscribing observable được trả về. Khi phương thức getImageList() được gọi, chúng ta trả về dữ liệu được lưu trữ trong một Observable. Chúng ta sử dụng 'of' trong RxJS (bạn có thể tham khảo ở Observable.of ). Luồng xử lý sẽ là: check nếu data tồn tại => trả về data đã được lưu trữ, nếu không sẽ thực hiện request mới.
Trong 2 component ImageListComponent và ImageDetailComponent sẽ gọi phương thức getImageList() để hiện thị dữ liệu ra view.
Kết quả
ImageDetailComponent
ImageListComponent
Nhận xét
Đăng nhận xét