Quay lại danh sách case study
Tối ưu hiệu năng khi gọi nhiều API bên thứ ba đồng thời
Giải pháp cải thiện tốc độ API khi cần lấy dữ liệu từ nhiều nguồn độc lập cùng lúc.
Bối cảnh
Trang chi tiết sản phẩm cần lấy thông tin sản phẩm, đánh giá và mã giảm giá từ 3 dịch vụ khác nhau.
Vấn đề cần xử lý
Ban đầu em gọi tuần tự các API bằng await từng cái một, khiến thời gian phản hồi của trang lên tới hơn 3 giây, làm trải nghiệm người dùng rất kém.
Hướng xử lý đề xuất
Em thay thế việc gọi tuần tự bằng Promise.all() để các request được chạy song song cùng một lúc, giảm tổng thời gian chờ đợi xuống đáng kể.
Câu trả lời mẫu khi phỏng vấn
Em nhận thấy các API này độc lập với nhau nên không cần chờ cái trước xong mới gọi cái sau. Em đã dùng Promise.all để gọi đồng thời cả 3 API, giúp thời gian phản hồi giảm từ 3 giây xuống còn khoảng 800 mili-giây.
Trade-off
Nếu một trong các API thành phần bị lỗi hoặc chậm, toàn bộ Promise.all sẽ bị từ chối (reject). Trong trường hợp cần dữ liệu độc lập, em có thể phải dùng Promise.allSettled.
Kết quả kỳ vọng
Cải thiện rõ rệt tốc độ phản hồi của API và tối ưu hóa tài nguyên mạng cho hệ thống.
Bài học khi trả lời phỏng vấn
Luôn phân tích tính phụ thuộc của dữ liệu để áp dụng xử lý bất đồng bộ song song khi có thể.