anguar, в Array.map дождитесь окончания функции, чтобы продолжить - PullRequest
0 голосов
/ 03 мая 2019

Я использую дерево, и я хочу получить всех родителей узла. поэтому я получаю список всех моих родителей и каждый раз получаю данные об узлах.

Моя проблема в том, что когда я выполняю итерации по своим идентификаторам узлов, я вызываю функцию для установки данных в моем дереве (эта функция также получает дочерние элементы). функция получает данные из http-вызова.

Но в функции карты я уже перебираю второй элемент перед первым завершением.

Я бы хотел продолжить на карте, когда закончится первый вызов.

трудно объяснить, я надеюсь, что это понятно:)

Это пример кода:

  setData(parentNode) {
    parentNode.isLoading = true;
    this.dataSource.getData(parentNode.id).subscribe(data => {
      this.data = data;
      parentNode.isLoading = false;
    });
  }

  getData(idToGet) {
    this.data.find(data => data.id);
  }

  initData(){
    const idsToFetch = [1,3,6];
    idsToFetch.map(id => {
      this.setData(
        this.getData(id)
      );
    });
  }

1 Ответ

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

В вашем случае требуется сохранить первоначальную копию поля данных.Я объединил методы для beavity.

initData(){
    const idsToFetch = [1,3,6];
    const initialData = this.data;
    idsToFetch.map(id => {
      this.setData(
        this.initialData.find(item => item.id == id)
      );
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...