2017-12-20 19 views
1

나는 firebase를 사용하고 있으며 사용자 균형을 만들려고합니다. 사용자가 상품을 구매할 때이 값은 잔액에서 제외됩니다.함수에서 일찍 깨기

이것은 현재 올바르게 작동하고 firebase 데이터베이스에서 업데이트됩니다. 그러나, 나는 새로운 균형을 계산하는 루프에서 벗어나는 것처럼 보일 수 없다. 따라서 동일한 계산이 반복됩니다.

나는 breakreturn을 사용해 보았으며 아무데도 들릴 수 없습니다.

function changeuserbal(coinwager){ 
var dbRoot = firebase.database().ref(); 
dbRoot.on("value", snap => { 
    var cData = snap.val(); 
    var cBet = cData.coinbet; 
    var uBal = cData.userbalance; 
    var BalUp = uBal-cBet; 
    alert(BalUp); 
    firebase.database().ref("userbalance").set(BalUp); 
}); 
} 

firebase.database().ref("userbalance").set(BalUp);이 루프를 다시 시작하기 때문에 가정합니다. 나는 이것을 외부에 배치하려했지만 루프 밖에서 BalUp을 전달하지 못하는 것 같습니다.

+2

여기서 "루프"가 표시되지 않습니다. – Pointy

+0

@Pointy 맞습니다.하지만 문제가 발생하면 루프가 문제를 일으키고 있습니다. 데이터가 업데이트되면 dbRoot.on이 다시 시작됩니다. – SubZeroFish

답변

3

on()은 데이터베이스의 위치에서 변경 사항에 지속적으로 응답하는 수신기를 설정합니다. 제거하기 전까지 반복적으로 호출 될 수 있습니다. 한 번만 데이터를 읽으려면 once()을 대신 사용하십시오.

+0

예, 해결되었습니다. 나는 이것을 간과 한 것 같습니다. 고맙습니다. – SubZeroFish