0
Я использую пакет управления «user-management» в узле, и у меня есть обратный вызов в обратном вызове в рамках обратного вызова. Но окончательный результат не возвращается. Это мой главный NodeJS модуль:JavaScript/NodeJS Обратный вызов в обратном вызове
playerManagement.login(data.username, data.pw, function (result) {
console.log(result) <-- statement never reached
if (result == "fail") {
socket.emit('client', { type: 'login', result : 'fail'});
} else {
connections[playerindex++] = {'username' : username, 'sockid' : socket.id, 'token' : result };
socket.emit('client', { type: 'login', result : 'success', username : username });
console.log(connections);
}
});
Тогда у меня есть внешний модуль с функцией:
playerModule.prototype.login = function(username, password) {
var o = this;
o.user.load(function (err) {
if (!err) {
o.user.authenticateUser(username, password, function(err, result) {
if (!result.userExists) {
console.log('Invalid username');
return "fail";
} else if (!result.passwordsMatch) {
console.log('Invalid password');
return "fail";
} else {
console.log('User token is: ' + result.token); <--- this is reached.
return result.token;
}
});
} else {
console.log('error logging in');
return "fail";
}
});
Так я предполагаю, мне нужно, чтобы вернуть значение к «нагрузки» функции обратного вызова, но я не уверен, как это сделать.
Вы должны использовать обещания. – SLaks
Если вы хотите принять обратный вызов, вам действительно нужно иметь параметр обратного вызова и вызвать его. – SLaks
Поскольку определение функции 'login' не имеет обратного вызова в качестве аргумента, –