Jest to powszechny błąd wśród początkujących użytkowników asynchronicznych/nodejs. Zasadniczo otoczyłeś funkcję asynchroniczną wewnątrz funkcji synchronizacji, która rozbija naturę pętli zdarzeń węzła. Wyrażenie zwrotne należy zastąpić wywołaniem zwrotnym. Zobacz poniżej:
// 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);
});
Zgodnie z konwencją, w Nodejs zawsze najpierw przekazujemy obiekt błędu w wywołaniu zwrotnym. W tym przypadku, ponieważ nie ma błędu do przechwycenia, przekazujemy w jego miejsce wartość null.