こんにちはすべて私はExpressを使用して基本nodesjsサーバーを作成しました。 ユーザが送信されたログインページがあり、Sqlite3 DBからのエントリをチェックします。 クエリがコールバック関数であるのは、その親関数が完了した後にのみ機能します。 しかし、以下の場合、Dbからのdb.eachコマンドには時間がかかるため、コールバック関数は必要な出力を与えません。しかし、タイムアウト機能を設定すると適切な答えが得られます。Javascriptコールバック
コードuserloginのページが呼び出され /*ポスト要求を切り取ら*/
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