Параметры функции, вызывающие ошибку разрешения обещания - PullRequest
0 голосов
/ 12 октября 2018

У меня есть функция (buildOrganization), которая обновляет мой график в пользовательском интерфейсе.

Он работает с точно такой же структурой данных, которую я сейчас пытаюсь пропустить (данные, с которыми он работает,updatedGraphTable)

Попытка использовать его как я во второй раз выдает ошибку (в функции getSubsidiaryEngagements)

TypeError: Аргументами path.resolve должны быть строки

Оба набора данных принимаются после вызова конечной точки и представляют собой ответ JSON - массив объектов формата.{ {[ {[ ]} ]} } вот так.

Вот мой код:

Функция для обновления кода (графического файла):

 buildOrganization(root, resolve): void {
  if (root) {
    this.organization.clear();
    this.organization.setProperties(root, this.filterParams);
    this.focus = this.organization;
    if (this.userList.length === 0) {
      this.userList = this.organization.individuals;
    }
    this.reload = false;
    this.data();
    resolve(true);
  }
}

Использование функции при работе (передача *)1022 * через него - который имеет ту же структуру данных, что и мои другие данные - массив объектов (они получены из одной и той же конечной точки):

graph(id: string): Promise < boolean > {
  if (this.organization.id && this.organization.id !== id) {
    this.organization = new EngagementRoot();
    this.resetGraph();
  }
  this.organization.setValues(id);
  return new Promise((resolve, reject) => {
    if (!this.reload) {
      resolve(false);
    } else {
      let areasLoaded = false;
      let root: IEngagementGraphNode;

      Observable.zip(this.organizationEngagements(id, this.requestOptions()), this.organizationIndividuals(id, this.requestOptions()))
        .subscribe(([updatedGraphTable, individualsData]) => {
          if (areasLoaded) {
            console.log('updated graph table!' + JSON.stringify(updatedGraphTable))
            return this.buildOrganization(updatedGraphTable, resolve);

          } else {
            root = updatedGraphTable;
          }
        }, error => reject(error));
    }
  });
}

Теперь эта функция не работаетЯ включил его за пределы этой графической функции, так как хочу, чтобы он вызывался только при вызове его из другого файла, который я покажу (поэтому данные вводятся таким же образом, как updatedGraphTable было:

getSubsidiaryEngagements(subId, resolve) {
  return this.subsidiariesEngagements(subId)
    .subscribe(data => {
      console.log('subsidiary engagements' + JSON.stringify(data));

      return this.buildOrganization(data, resolve); < --error!
    })
}

Затем в моем другом файле я пытаюсь вызвать эту новую функцию:

updateSub(data) {
  this.engagementService.getSubsidiaryEngagements(this.subId, resolve)
}

Но прежде чем я даже могу вызвать ее, я получаю эту ошибку в консоли, когда страница сначала загружается, прежде чем ядаже вызывает функцию, но она также показывает, когда я вызываю ее:

TypeError: Аргументами path.resolve должны быть строки
в webpackJsonp ... / .. / .. / .. /path-browserify / index.js.exports.resolve

Я уверен, что я глупый и пропалчто-то очевидное?

...