0
Nodeで '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'関数の定義に引数としてコールバックがないので、 –