Могу ли я завершить обратный вызов firebase в самом обратном вызове? - PullRequest
0 голосов
/ 14 мая 2019

Я хотел бы знать, есть ли способ остановить обратный вызов внутри самого обратного вызова.Я попытался использовать метод ref.off (), чтобы остановить его, как показано ниже, но он все равно будет продолжать работать.Есть предложения?

ref.orderByChild('t').startAt(time.getTime()).on('child_added', function (snapshot) {
  const d = snapshot.val();
  const x = Math.round(d.x * 100).toString();
  const y = Math.round(d.y * 100).toString();
  if (that.selectedEnd && d.t > that.selectedEnd.getTime()) {
    snapshot.ref.off('child_added');
    console.log('STOP');
  } else {
    ....
  }
});

1 Ответ

0 голосов
/ 14 мая 2019

Согласно документации API для on():

Возвращает функцию

Предоставленная функция обратного вызова возвращается без изменений.Это просто для удобства, если вы хотите передать встроенную функцию в on (), но сохранить функцию обратного вызова для последующей передачи в off ().

Таким образом, вы можете передать возвращаемое значение в off(), вызванный в том же объекте Query, где вы вызвали on():

const query = ref.orderByChild('t').startAt(time.getTime());
const listener = query.on('child_added', function (snapshot) {
    ...
    query.off('child_added', listener);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...