【发布时间】:2018-04-19 19:34:40
【问题描述】:
我正在编写一个函数,使用 concatMap 按顺序进行 HTTP 调用,例如添加一个人,使用返回的一些信息添加一个联系人,然后添加一些帐户。
该函数接收一个列表(在我的例子中是投资组合),我需要为每个投资组合创建对 addAccount 和 addInvestorAccount 的调用。
例如,两个投资组合需要对这些端点进行两组调用(addInvestorAccount 取决于 addAccount 的结果)
我不确定如何创建这些动态 HTTP 调用集并将它们附加到当前流。我看过 forkJoin 但这似乎是针对独立的并行调用。
希望这有点道理,这里有一些演示代码:
AddPerson(person: Person, portfolios: Portfolio[]) {
const addPerson = new AddPersonRequest();
// additional request props
return this.hostSvc.put(addPersonRequest)
.concatMap((response: Person) => {
const emailContactRequest = new CreateContactRequest();
emailContactRequest.PersonId = response.Id;
// additional request props
return this.hostSvc.put(emailContactRequest)
})
.concatMap((response: AccountName) => {
const addAccountRequest = new AddAccountRequest();
addAccountRequest.Data = new Account();
addAccountRequest.Data.AccountId = response.Id
addAccountRequest.Data.PortfolioId = portfolios[0].Id
// additional request props
return this.hostSvc.put(addAccountRequest);
})
.concatMap((response: Account) => {
const addInvestorAccountRequest = new AddInvestorAccountRequest();
addInvestorAccountRequest.Data = new InvestorAccount();
addInvestorAccountRequest.Data.AccountType = response.AccountType
// additional request props
return this.hostSvc.put(addInvestorAccountRequest);
}, (error) => console.log(error))
}
正如您在上面看到的,我使用的是 Portfolio[0],显然我需要为 addAccountRequest 和 addInvestorAccountRequest 迭代投资组合
谢谢!
【问题讨论】:
标签: angular typescript rxjs observable