router.get("/roll", function (req, res) {
//Re-enable the session.
//req.session.isrolling = 1;
if(typeof req.session.isrolling === "undefined") {
console.log(classname + "** setting the variable **");
req.session.isrolling = 1;
}
console.log(classname + "[0]" + req.session.isrolling);
if(req.session.isrolling == 1 || req.session.isrolling == 3) {
console.log(classname + "[1] " + req.session.isrolling);
req.session.isrolling = 0;
console.log(classname + "[2] " + req.session.isrolling);
당신이 볼 수 있듯이, 나는 분명히 '디버깅'으로 자신을 찔렀다.Node.JS req.session.variable과 비동기?
어쨌든 출력은 정상적으로 출력됩니다.
- 는 [하는 index.js] [0] 3
- [하는 index.js] [1] (3)
- 는 [하는 index.js] [2] 0
난에 부울을 사용 시도가 잘못되었는지 확인하십시오. 나는이 부분에 종료 기능 내에서 일부 콜백과 기능 어쨌든 후 - 콘솔도하지 않은 동안 롤이 대기하는 동안이 모든에도 불구하고
rollController.UpdateDeposit(true, winAmmount, req.session.userSecret, function(callbackresult) {
if(callbackresult) {
console.log(classname + "[3]" + req.session.isrolling);
req.session.isrolling = 3;
console.log(classname + "[4]" + req.session.isrolling);
}
, 그리고 예상되는 '출력'나는 스팸을 유지할 수 있습니다 출력;
[index.js] [3]0 [index.js] [4]3
내가하는 index.js 내에서 지역 변수 (당연히하지 최적의 방법으로) 그것을 수정을 만들려고하면,하지만 당은 1 개 쿼리, 그리고 사용자 당 (벙어리 예).
내가 정의되지 않은 것을 추가했는데, 그것은 mySQL을 뒤범벅하고 일부 데이터를 재설정 할 때 발생합니다. 성능 때문에 mongoDB로 전환해야한다면 나 자신을 궁금해하고있다.
그래서 주된 질문은 어디서 잘못 될 것인가? 사용자 당 대기열을 만드는 더 나은 방법은 무엇입니까?
많은 디버깅과 시도 끝에 문제가 발견되었습니다. 세션 변수가 변경되었지만 메서드가 완료된 후에 세션 저장소가 문제가 있습니다. 변수의 개념은 보류중인 메소드가 보류 중일 때 충돌을 막는 것입니다. 클라이언트와 마찬가지로 타이머를 사용하여 완료됩니다. –