Quay lại danh sách case study
Xử lý bất đồng bộ tuần tự khi gọi nhiều API phụ thuộc
Tình huống cần gọi danh sách API có dữ liệu phụ thuộc lẫn nhau mà không làm rối code.
Bối cảnh
Khi xây dựng trang quản lý đơn hàng, lập trình viên cần lấy thông tin người dùng trước, sau đó dùng ID người dùng để gọi lấy danh sách giỏ hàng, rồi tiếp tục lấy thông tin chi tiết mã giảm giá.
Vấn đề cần xử lý
Nếu dùng callback truyền thống sẽ dễ rơi vào callback hell, code khó đọc và khó bắt lỗi tập trung.
Hướng xử lý đề xuất
Sử dụng cú pháp async/await kết hợp với cấu trúc try/catch để gọi tuần tự từng API một cách rõ ràng và mạch lạc.
Câu trả lời mẫu khi phỏng vấn
Dạ với tình huống này, em sẽ sử dụng async/await thay vì viết nhiều tầng callback hay promise chaining. Em sẽ viết một hàm bất đồng bộ, gọi API lấy user trước rồi await kết quả đó để truyền ID vào API lấy giỏ hàng tiếp theo. Toàn bộ logic được bọc trong try/catch giúp em dễ dàng log lỗi và hiển thị thông báo phù hợp cho người dùng.
Trade-off
Gọi API tuần tự làm tổng thời gian chờ đợi của người dùng tăng lên bằng tổng thời gian các API cộng lại, nhưng đảm bảo tính chính xác về mặt logic dữ liệu.
Kết quả kỳ vọng
Mã nguồn trở nên gọn gàng, dễ bảo trì và giảm thiểu tối đa các lỗi liên quan đến việc truyền sai tham số giữa các bước.
Bài học khi trả lời phỏng vấn
Khi các API có tính phụ thuộc dữ liệu bắt buộc phải gọi tuần tự, async/await là công cụ đắc lực nhất giúp code sáng sủa và dễ debug.