Quay lại danh sách case study
Xử lý Callback Hell khi gọi nhiều API liên tiếp
Tình huống thực tập sinh gặp khó khăn khi đọc và sửa code cũ chứa quá nhiều callback lồng nhau.
Bối cảnh
Khi tham gia dự án thương mại điện tử tại công ty, tôi nhận nhiệm vụ viết chức năng tạo đơn hàng bao gồm kiểm tra kho, trừ tiền tài khoản và gửi email xác nhận.
Vấn đề cần xử lý
Do các thao tác này gọi bất đồng bộ tuần tự, code ban đầu sử dụng callback lồng nhau sâu tới 5 tầng, dẫn đến callback hell, cực kỳ khó đọc và dễ sót lỗi.
Hướng xử lý đề xuất
Tôi đã refactor toàn bộ đoạn code đó sang sử dụng Promise kết hợp với async/await, đồng thời gom các bước thành các hàm nhỏ gọn và dùng try/catch để bắt lỗi tập trung.
Câu trả lời mẫu khi phỏng vấn
Dạ, khi em gặp trường hợp callback hell, việc đầu tiên em làm là phân tích lại luồng xử lý nghiệp vụ xem bước nào cần chạy tuần tự, bước nào có thể chạy song song. Sau đó, em chuyển đổi code cũ sang dùng async/await để mã nguồn phẳng hơn, dễ đọc và dễ viết unit test hơn ạ.
Trade-off
Việc chuyển đổi đòi hỏi thời gian viết lại toàn bộ tầng dịch vụ và cần test kỹ lưỡng để đảm bảo không làm gãy các tính năng hiện tại.
Kết quả kỳ vọng
Đoạn code mới giảm được 60 số dòng, logic rõ ràng hơn và giúp đội ngũ dễ dàng thêm tính năng thanh toán mới sau đó.
Bài học khi trả lời phỏng vấn
Tôi rút ra bài học sâu sắc về việc tuân thủ clean code và luôn ưu tiên dùng async/await cho các dự án Node.js hiện đại để tránh technical debt.