完成onClick方法和on值

时间:2018-08-21 22:27:55

标签: jquery firebase firebase-realtime-database

我正在使用Firebase的云功能和realtimeDatabase。我有一个问题,当游戏结束时,会打开一个自定义对话框,单击该对话框可以在玩另一个游戏时点击

$reiniciar.on("click", function () {
    $casilla.css("display", "flex");
    $footer_casilla.css("display", "none");
    let dentro = false;
    if(!dentro) {
        ruta_partida.on("value", function (snapshot) {
            dentro = true;
            const datos = {
                turno_global: 1,
                casillero: [0, 0, 0, 0, 0, 0, 0, 0, 0],
                ganador: 0
            };
            ganador = snapshot.child("datos").val().ganador;

            if (ganador !== 0) {
                ruta_partida.child("datos").set(datos);
                let casillero = snapshot.child("datos").val().casillero;

                turno_jugador.textContent = "Espere a que el rival reinicie";
            } else if (ganador === 0) {
                ruta_partida.child("datos").update(datos);
                if (turno === 1)
                    turno_jugador.textContent = "Su turno";
                else if (turno === 2)
                    turno_jugador.textContent = "Espere su turno";
                let casillero = snapshot.child("datos").val().casillero;

            }
        });
    }
    casillero_viejo = [
        0,0,0,
        0,0,0,
        0,0,0,
    ];
});

问题是,当游戏出现时,我什么也做不了,因为当我这样做时,数据库必须更改,并且此方法始终会重新启动数据库

1 个答案:

答案 0 :(得分:0)

您可能应该使用once()方法而不是on()方法,如下所示。

使用on()方法,将在初始数据每次更改时再次触发回调。请参见有关这两种方法herehere的文档。

ruta_partida.once(function (snapshot) {
            dentro = true;
            const datos = {
                turno_global: 1,
                casillero: [0, 0, 0, 0, 0, 0, 0, 0, 0],
                ganador: 0
            };
            ganador = snapshot.child("datos").val().ganador;

            if (ganador !== 0) {
                ruta_partida.child("datos").set(datos);
                let casillero = snapshot.child("datos").val().casillero;

                turno_jugador.textContent = "Espere a que el rival reinicie";
            } else if (ganador === 0) {
                ruta_partida.child("datos").update(datos);
                if (turno === 1)
                    turno_jugador.textContent = "Su turno";
                else if (turno === 2)
                    turno_jugador.textContent = "Espere su turno";
                let casillero = snapshot.child("datos").val().casillero;

            }
        });