Я новичок в RXJS Observables, и я пытаюсь улучшить следующий код, этот код хорошо работает, поэтому я написал этот код, думая о линейном программировании, но я думаю, что это не правильно, но кнопка вызова этой функции:
submitLocations() {
var locationsToAdd = this.locationsChecked.filter(item => !this.myLocations.some(other => item.id === other.id));
var locationsToDelete = this.myLocations.filter(item => !this.locationsChecked.some(other => item.id === other.id));
if (locationsToAdd.length > 0) {
this.addLocations(this.createLocationsToEdit(locationsToAdd));
}
if (locationsToDelete.length > 0) {
this.deleteLocations(this.createLocationsToEdit(locationsToDelete));
}
const startIndex = this.navCtrl.getActive().index - 1;
this.navCtrl.remove(startIndex, 2).then(() => {
this.events.publish('dniNameUpdated', true);
this.navCtrl.pop().then(() => this.presentToast(`Se han actualizado tus localizaciones favoritas`))
})
}
private createLocationsToEdit(locations) {
let locationsToEdit = {} as LocationLegacyEdit;
locationsToEdit.locations = [];
locations.forEach((res: LocationModel) => {
locationsToEdit.locations.push(res.id);
});
return locationsToEdit;
}
Как вы видите, в моем коде у меня есть 2 списка для добавления и удаления местоположений, если его длина превышает 0, я должен вызывать свои сервисы с помощью: addLocations и deleteLocations.
private addLocations(locations: LocationLegacyEdit) {
this._sp.addFavoriteLocationList(locations).subscribe(() => {
}, error => console.log(error))
}
private deleteLocations(locations: LocationLegacyEdit) {
this._sp.deleteLocationOteroUserList(locations).subscribe(() => {
}, error => console.log(error))
}
И мои услуги, которые возвращают наблюдаемые, таковы:
deleteLocationOteroUserList(locations: LocationLegacyEdit): Observable<any> {
let url = URL_SERCAE + '/instances/favorites-locations';
return this.http.request('DELETE', url, {
body: locations
})
}
addFavoriteLocationList(locations: LocationLegacyEdit): Observable<any> {
let url = URL_SERCAE + '/instances/favorites-locations';
return this.http
.post(url, locations)
.map(res => {
return res['result'];
})
}
Может кто-нибудь помочь мне, как я могу улучшить этот поток? Я не уверен, должен ли я написать 1 услугуобъединить ДОБАВИТЬ с УДАЛИТЬ или Должен ли я написать это в моем компоненте с условным продолжением, если длина равна 0.
Заранее спасибо