大家好我已經使用express創建了一個基本nodesjs服務器。 有一個用戶發送的登錄頁面,它從Sqlite3數據庫檢查條目。 我的查詢是回調函數只有在其父功能完成後才起作用。 但是在以下情況下,由於db的db.each命令需要一些時間,所以回調函數不會提供所需的輸出。但是如果我設置超時功能,它會給出一個合適的答案。Javascript回調
代碼剪斷 /* POST請求用戶登陸頁面被稱爲*/
app.post('/userLogin',function(req,res){
checkLogin(req,function(){//using a callback
setTimeout(function(){//delaying the execution of this part**
if(userLoginStatus=='SUCCESS'){res.render('userLogin');}
else{res.send('Wrong credentials');}
},100);
});
});
function checkLogin(req,callback){
db.serialize(function(){
db.each("SELECT * from USERLOGIN where USERID ='"+req.body.userId+"'"+
" AND PASSWORD='"+req.body.password+"'",function(err,row){
if(row.USERID.length>0){userLoginStatus ='SUCCESS';}
else {userLoginStatus = 'UNSUCCESFUL';}
});
});
callback();
}
很可能你需要將這些調用鏈接在一起。你應該閱讀關於帶有回調的Javascript異步調用。閱讀承諾也很有趣:-) – flob