Я новичок в Angular. Я попытался сделать массив объектов из ReplaySubject.
Здесь у меня есть массив ReplaySubject, и я делаю цикл и подписываю данные внутри него и pu sh в переменную массива.
var combine_data = [];
this.productService.getLot(product_ids.join('-')).forEach(function(data){
data.subscribe(v => {
combine_data.push(v);
});
});
результат, когда я на нем console.log, будет выглядеть следующим образом
Я попытался сделать combine_data.find(data => data.id === 92);
и его возвращение не определено.
И я попытался создать фиктивный массив объектов, используя простой для итерации
var test = [];
for(var i=0;i<4;i++){
test.push({id:i,name:'name'});
}
, и результат этого фиктивного массива, когда я на нем console.log, сильно отличается от предыдущего
Используя этот фиктивный массив, я получил (4)[{..}{..}{..}{..}
, и я могу сделать .find
, но используя первый массив, я получил []
, и я не могу сделать .find
на нем.
Вот результат this.productService.getLot(product_ids.join('-'))
А вот функция productService.getLot
public getLot(id: string){
var _this = this;
var result = [];
var ids = [];
ids = id.split('-');
ids.forEach(function(product_id){
if (_this.products[product_id] == null) {
_this.products[product_id] = new ReplaySubject<any>();
_this.http.get(`https://xxxx.com/api/products/${product_id}`)
.subscribe(data => {
_this.products[product_id].next(data)
});
}
result.push(_this.products[product_id]);
});
return result;
}
Это тот же самый метод pu sh данных в переменную. Но почему я получил другой результат? Я действительно не понимаю.
Я просто делаю стек стлиц для своей задачи HttpClientCombineData