我有以下代码:
班次取决于地点,地点取决于城市和
this.getCities()
,this.getEmployerLocations()
和this.getEmployerShifts()
呼叫返回Observables
export class Employer {
cities : string[];
locations : Location[];
shifts : Sift[];
constructor() {
this.prepareShifts();
}
this.prepareShifts() {
}
this.getCities().subscribe( cities => {
this.cities = cities;
this.getEmployerLocations().subscribe( locations => {
this.locations = locations;
this.locations.forEach( location => {
location.city = this.getCityById( location.cityId ); // from cities received: this.cities
});
this.getEmployerShifts().subscribe( shifts => {
this.shifts = shifts;
thi.shifts.forEach( shift => {
this.shift.location = this.getShiftLocationById( shift.locationId ); // from locations received: this.locations
});
});
);
});
}
如您所见,我需要按Firebase中的值填写城市,位置和班次。我做了嵌套调用以实现目标。
我想知道是否有适当的方法来完成它?我感觉自己做错了。
答案 0 :(得分:1)
您可以使用class PersonValidator : AbstractValidator<Person>
{
PersonValidator()
{
RuleFor(c => c.Name).NotEmpty();
var addressValidator = new AddressValidator();
addressValidator.Validate( person.address ) // ???
}
}
的{{1}}运算符。
对于嵌套异步操作非常有用。还有其他一些类似的运算符,flatMap
是我通常使用的运算符。使用RxJs
时,就像flatMap
运算符一样,在其中返回标量对象。使用flatMap
,您可以返回另一个可观察值。最后,您可以订阅最新的观察者。
这是您可以怎么做
map