がHi何も約束はここで使用されている方法と違って見えるん、これは最初の実行のために動作しますが、その後私は再びしようとすると、壊れているようだ可能なプロミス問題が
socket.on('new user', function(data, callback) {
return getUsersFromDb()
.then(function() {
if (users.name.indexOf(data) > -1) {
callback(false);
reject(err);
}
else {
callback(true);
// socket.nickname = data;
// people[socket.nickname] = socket;
updateNicknames();
var user = new User();
user.name = data;
user.save(function(err, data) {
if (err) {
console.log(err)
}
else {
return getUsersFromDb()
.then(function() {
updateNicknames()
})
.catch(function(e) {
console.log("Error", e)
})
}
});
socket.broadcast.emit('user join', {nick: socket.nickname});
}
})
.catch(function(e) {
console.log("Error", e)
})
});
サブライムは、色のようですし、誤って使用されたかのように2番目のelseを別の方法でキャッチする
'socket'変数とは何ですか?それはsocket.io接続ですか?あるいは普通のソケット接続ですか?また、なぜあなたは 'reject(err)'を呼びますか? 'reject()'はどこに定義されていますか?そして、なぜ 'socket.on()'コールバックの第2引数がコールバックであると思いますか? 'updateNicknames()'は何をしますか?動作しないときに行ったデバッグは何ですか?それがどのようなコードのパスを知っていますか?どのようなエラーが出ますか?これは、要素のデバッグを最初に行う必要があるように聞こえるので、コードがどこに間違っているか正確に教えてください。 – jfriend00
あなたのコードは本当に再構築する必要があります。何を返すのですか?あなたが複数の非同期呼び出しを持っていて、それらを連鎖させるならば、あなたは約束を渡すべきです –