Đây là một lỗi phổ biến ở những người mới bắt đầu sử dụng async / nodejs. Về cơ bản, bạn đã bao bọc một hàm không đồng bộ bên trong một hàm đồng bộ, chức năng này phá vỡ bản chất của vòng lặp sự kiện của nút. Biểu thức trả về cần được thay thế bằng một lệnh gọi lại. Xem bên dưới:
// Method
function getUserInfo (userID, dynamicField, callback) {
var query = connection.query('SELECT '+dynamicField+' from users WHERE userID = '+connection.escape(userID));
query.on('result', function(row) {
callback(null, row.dynamicField);
});
};
// Implementation
getUserInfo(8, userEmail, function(err, result){
console.log(err || result);
});
Theo quy ước, trong Nodejs, chúng ta luôn truyền một đối tượng lỗi đầu tiên trong lệnh gọi lại. Trong trường hợp này vì không có lỗi để nắm bắt, chúng tôi chuyển null vào vị trí của nó.