anguar,在Array.map中等待函数结束继续

时间:2019-05-03 14:26:45

标签: angular asynchronous

我用一棵树,我想得到一个节点的所有父节点。 这样我就得到了所有父母的清单,并且foreach我得到了节点数据。

我的问题是,当我迭代节点ID时,我调用一个函数来设置树中的数据(该函数也将获取子节点)。该函数从http调用获取数据。

但是在map函数中,我已经在第一个终止项之前迭代了第二个项。

第一个通话结束后,我想在地图上继续。

很难解释,我希望它是可以理解的:)

这是一个代码示例:

  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 :(得分:0)

您的案例要求您保留数据字段的初始副本。我合并了beavity的方法。

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