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.