Я пытаюсь вернуть отфильтрованную версию наблюдаемых объектов из массива наблюдаемых объектов. У меня есть две службы, одна из которых получает блюда с сервера и возвращает массив наблюдаемого блюда, а другая - использует эту службу и получает блюда, помеченные как избранные, которые также должны возвращать массив или наблюдаемое блюдо. ,
Сначала я смог получить ожидаемые результаты, используя обычный массив. см. рабочий код ниже:
Любимая услуга:
favorites: Array<any>;
getFavorites(): Observable<Dish[]> {
return this.dishservice.getDishes().pipe(map(
dishes => dishes.filter(
dish => {
//returns true or false for every dish in dishes
this.favorites.some(el => el === dish.id)
}
)
));
}
Блюдо:
getDishes(): Observable<Dish[]> {
return this.http.get<Dish[]>(baseURL + 'dishes')
.pipe(catchError(this.processHTTPMsgService.handleError));
}
Блюда / блюда, помеченные как избранные, не сохраняют отметку после перезагрузки страницы, поэтому для решения этой проблемы я должен использовать хранилище Ionic.
Ниже приведено то, что я сделал, который игнорирует фильтр и возвращает все наблюдаемые блюда:
Любимое обслуживание:
getFavorites(): Observable<Dish[]> {
return this.dishservice.getDishes().pipe(map(
dishes => dishes.filter(
async dish => {
await this.storage.get("favorites").then(
result => {
//returns true or false for every dish in dishes
//console.log(result.some(el => el === dish.id));
return result.some(el => el === dish.id);
}
)
})
));
}
У меня нетлюбые ошибки, так что я действительно загнан в угол, почему это происходит. Это может быть связано с этим вопросом , но я не совсем уверен.
Что мне здесь не хватает?