函数参数导致承诺解决错误

时间:2018-10-12 08:47:08

标签: javascript json angular promise

我有一个函数(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);
  }
}

使用该函数并使其正常工作(通过updatedGraphTable-与我的其他数据具有相同的数据结构-对象数组。(它们是从同一端点派生的):

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

我确定我很傻并且缺少明显的东西吗?

0 个答案:

没有答案