Angular - дождаться, пока эта переменная будет иметь значение, а затем выполнить - PullRequest
1 голос
/ 28 марта 2020

В ngOnInit() первая строка кода выбирает value из локального хранилища, а затем это значение используется для filter данных из базы данных.

Оба выполняются вместе и Я не получаю результат. Как я могу сделать что-то вроде второй функции ждет пока первая из них получит значение.

Ниже мой ts код:

 ngOnInit() {

    //get id of user
    this.storage.get('loggedInUser').then((val) => {
      console.log('Your user ID is', val);
      this.loggedInusr = val;
    });

    firebase.firestore().collection(`todos`)
  .where("assignTo", "==", this.loggedInusr) // don't get value here, if I hard code all works
  .get()
  .then(querySnapshot => {
      querySnapshot.forEach(function(doc) {
          console.log("assignTo");
          console.log(doc.id, " ===> ", doc.data());
      });
    });

    ...

Ответы [ 2 ]

1 голос
/ 28 марта 2020

Вы можете переместить 2-ю процедуру внутри обработки 1-й процедуры. Попробуйте следующее

ngOnInit() {
  //get id of user
  this.storage.get('loggedInUser').then((val) => {
    console.log('Your user ID is', val);
    this.loggedInusr = val;

    firebase.firestore().collection(`todos`)
      .where("assignTo", "==", this.loggedInusr) // dont get value here, if i hard code all works
      .get()
      .then(querySnapshot => {
        querySnapshot.forEach(function(doc) {
            console.log("assignTo");
            console.log(doc.id, " ===> ", doc.data());
        });
      });

  });
  .
  .
}
0 голосов
/ 28 марта 2020

вы можете использовать для этого карту переключения rx js, а затем, если какие-либо значения изменятся в наблюдаемой, это автоматически обновится

import { from } from 'rxjs';

     from(this.storage.get('loggedInUser'))
      .pipe(switchMap((loggedUser) => 
              from(firebase.firestore().collection(`todos`).where("assignTo", "==",loggedInusr) .get()).subscribe(querySnapshot => {
                querySnapshot.forEach(function(doc) {
                console.log("assignTo");
                console.log(doc.id, " ===> ", doc.data());
            });
    ))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...