0
你好,這適用於第一次執行,但後來當我再試一次它似乎打破,沒有什麼似乎錯誤的諾言,這裏使用的方式可能無極問題
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)
})
});
崇高似乎上色,然後與在第二個裏面抓住不同的方式,就好像它被錯誤地使用了一樣
什麼是套接字變量?它是一個socket.io連接?或一個普通的套接字連接?另外,你爲什麼要叫'reject(err)'。 reject()定義在哪裏?而且,爲什麼你認爲''socket.on()'回調的第二個參數本身就是一個回調? 'updateNicknames()'做了什麼?你做什麼調試,當它不起作用?你知道它需要什麼代碼路徑嗎?你會得到什麼錯誤?這聽起來像你需要先進行元素調試,以便你可以確切地告訴我們代碼出錯的地方。 – jfriend00
你的代碼真的需要重構,你會返回什麼?你應該通過一個承諾,然後如果你有多個異步調用,並鏈接起來 –