如何使用Angular在函数上调用多个API?

时间:2018-03-12 14:07:33

标签: angular rest web-services angular-services angular-observable

我需要在单个函数上调用4个不同的API,这需要一个接一个地执行,因为我之前的API结果将使用下一个Call作为参数。例如:我有一个geo Ip的调用API,然后我需要调用另一个API,我需要传递lat和long,这是我从第一次API调用获得的。

如何在角度4上完成此任务?

我听说过一些像flatmap和forkjoin这样的方法。这种方法可以使用吗? (我没有任何代码,因为我有点困惑)。

2 个答案:

答案 0 :(得分:1)

您可以执行以下操作:

  this.http.get('/api/people/1').subscribe(character => {
      this.http.get(character.homeworld).subscribe(homeworld => {
        character.homeworld = homeworld;
        this.loadedCharacter = character;
      });
    });

所以这里基本上你是在链接http调用。首先,我们要求从/ api / user / 1获取用户。一旦加载,我们发出第二个请求,获取该特定角色的家园。一旦我们获得了homeworld,我们将它添加到角色对象并在我们的组件上设置loadedCharacter属性,你可以在那里进行4次https调用。

您可以使用mergeMap运算符执行此操作 例如:

this.http.get('./customer.json')
            .map((res: Response) => res.json())
            .mergeMap(customer => this.http.get(customer.contractUrl))
            .map((res: Response) => res.json())
            .subscribe(res => this.contract = res);

可以在here

上找到更多信息

答案 1 :(得分:1)

如果你可以使用es6,你可以使用async并等待

public void Insert(int x)
{
    Node a = new Node(x);

    if (Head == null)
    {
        Head = Tail = a;
    }
    else
    {
        Tail = Head;
        while (Tail.Next != null)
        {
            Tail = Tail.Next;
        }
        Tail.Next = a;
        a = Tail;
    }
}

}