我如何发送数据到服务器的循环没有同步问题?



我有一个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

我该如何修复它?

谢谢你。

  1. 请求不一定按顺序运行,您可以使用concat:
  2. 等操作符:
concat(array.map(element=>{
this.product.price=element;
return this.myService.func(product)
})).subscribe(a=>{console.log(a);});
  1. 在每次迭代中,你都在更新产品的相同实例(如果这不是故意的),这会导致奇怪的行为。

最新更新