我有一个typescript(在angular中)的产品数组,我需要通过http调用在数据库中更新它们的价格。
我以这样的方式插入它们:
array.foreach(element=>{
this.product.price=element;
this.myService.func(this.product).subscribe(a=>{console.log(a);});
})
这个代码的问题是,最终的数据是不正确的,因为从服务器的答案来慢,所以如果例如有3个对象在数组中-然后最后两个将发送到服务器相同的价格,数组的最后一个成员。
更清晰的例子:
假设数组初始化为以下价格:
[0]=10
[1]=20
[2]=30
除了那个数组,我还有一个product:
Product p = new Product('product',50);
现在我要向数据库中插入3个名称为'product'的产品和数组中的价格。这将通过来自服务器的函数。
我想要的结果是插入到数据库中的所有产品
product,10
product,20
product,30
但是我得到了这个结果:
product,10
product,30
product,30
我该如何修复它?
谢谢你。
- 请求不一定按顺序运行,您可以使用concat: 等操作符:
concat(array.map(element=>{
this.product.price=element;
return this.myService.func(product)
})).subscribe(a=>{console.log(a);});
- 在每次迭代中,你都在更新产品的相同实例(如果这不是故意的),这会导致奇怪的行为。