我需要在单个函数上调用4个不同的API,这需要一个接一个地执行,因为我之前的API结果将使用下一个Call作为参数。例如:我有一个geo Ip的调用API,然后我需要调用另一个API,我需要传递lat和long,这是我从第一次API调用获得的。
如何在角度4上完成此任务?
我听说过一些像flatmap和forkjoin这样的方法。这种方法可以使用吗? (我没有任何代码,因为我有点困惑)。
答案 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;
}
}
}