У меня есть эта проблема, у меня есть ProductService
, который имеет логическую функцию validateProductsBeforeChanges
.
Внутри validateProductsBeforeChanges
Я вызываю функцию из другой службы с именем OrderService
, которая возвращает наблюдаемое.
Пример кода:
validateProductsBeforeChanges(idProduct): Boolean {
this._orderService.getAll()
.subscribe(orders => {
this.orders = orders;
this.ordersWithCurrentMenu = this.orders.filter(x =>
x.products.find(y => y.code == idProduct));
if(this.ordersWithCurrentMenu.length > 0) {
return false;
}
else {
return true;
}
});
}
Проблема в том, что vsВ коде выдается синтаксическая ошибка:
Функция, объявленный тип которой не является ни void, ни any, должна возвращать значение
Поэтому я попытался сделать что-то вроде этого:
validateProductsBeforeChanges(idProduct): Boolean {
this._orderService.getAll()
.subscribe(orders => {
this.orders = orders;
this.ordersWithCurrentMenu = this.orders.filter(x => x.products.find(y => y.code == idProduct));
if (this.ordersWithCurrentMenu.length > 0) {
return false;
}
else {
return true;
}
});
return false;
}
Но в этом случае последний возврат выполняется до окончания .subcribe
, а функция всегда возвращает false.
Есть идеи, как это решить?
Большое спасибо!