我这里有这段代码
id
显然,在客户端,我有类似的东西:
AFJSONRequestSerializer
但是,每当我尝试成功登录时,我的服务器都不会向客户端发送任何内容,即我将在终端上看到打印的行,但客户端没有从服务器获得响应。我一直对此感到困惑。我有另一个功能,触及PostgreSQL驱动程序并成功发出,但这个没有。有谁知道为什么会这样?
答案 0 :(得分:0)
您的代码中存在错误。永远不应该在try / catch中编写异步函数。
try {
setTimeout(function() {
do_something_that_throws();
}, 1000);
}
catch (e) {
alert("You won't see this!");
}
问题是控制流在执行do_something_that_throws()之前离开try块,因此回调中抛出的错误永远不会被捕获。
socket.on("login", function(data) {
pg.connect(conString, function(err, con) {
if(err) {
// handle error
}
var query = con.query("SELECT * FROM accounts WHERE username" +
"='" + data.usn + "';");
query.on("row", function(row, result) result.addRow(row); });
query.on("end", function(result) {
if (sha512(data.pwd, result.rows[0].salt).hash ===
result.rows[0].password) {
socket.emit("loginResponse", { status: "Success" });
console.log("I GOT UP TO HERE WITHOUT EMITTING! WTF?");
console.log(sha512(data.pwd,result.rows[0].salt).hash);
console.log(result.rows[0].password);
}
});
});
});
尝试这种方法,让我知道它是否正常工作。