CodeReady
Quay lại danh sách case study

Xử lý lỗi bất đồng bộ khi gọi nhiều API đồng thời

Tối ưu hóa thời gian tải trang bằng cách gọi nhiều API song song thay vì tuần tự.

Bối cảnh

Trong một dự án thương mại điện tử, trang chi tiết sản phẩm cần lấy thông tin sản phẩm, đánh giá và sản phẩm gợi ý từ ba API khác nhau.

Vấn đề cần xử lý

Intern trước đó gọi từng API một cách tuần tự bằng await, làm tổng thời gian phản hồi tăng gấp ba lần, gây chậm trải nghiệm người dùng.

Hướng xử lý đề xuất

Sử dụng Promise.all để gọi đồng thời ba API, kết hợp khối try/catch để bắt lỗi nếu một trong các API thất bại.

Câu trả lời mẫu khi phỏng vấn

Em sẽ dùng Promise.all để gọi các API song song vì chúng độc lập với nhau. Nếu dùng await liên tiếp sẽ mất thời gian chờ đợi không cần thiết. Em cũng sẽ bọc trong try/catch để xử lý trường hợp một API lỗi mà không làm sập toàn bộ giao diện.

Trade-off

Promise.all sẽ thất bại ngay lập tức nếu có một Promise bị reject. Nếu muốn các API khác vẫn chạy dù một API lỗi, cần dùng Promise.allSettled.

Kết quả kỳ vọng

Giảm thời gian tải trang chi tiết sản phẩm từ 1200ms xuống còn 400ms, cải thiện đáng kể điểm hiệu năng trên trình duyệt.

Bài học khi trả lời phỏng vấn

Nên phân tích tính độc lập của dữ liệu trước khi viết mã bất đồng bộ để tận dụng tối đa cơ chế xử lý song song của JavaScript.