【问题标题】:How to convert sequentially emitted data to a single array如何将顺序发出的数据转换为单个数组
【发布时间】:2019-12-09 18:37:09
【问题描述】:

所以,我正在使用 ngrx 存储来获取数据。一旦我从商店中选择了我想要的属性,然后我订阅了它以获得可观察的流。 我的数据包含对象数组。所以在这个对象数组中,我要对每个对象的一些属性做一些修改。

为此,我使用 rxjs 库的 'from()' 运算符将我的对象数组转换为顺序可观察对象,然后将其分配给新的可观察对象。使用这个新的 Observable 对象,我应用 map 函数进行修改,最后再次返回一个新的 Observable 对象。 直到这一步一切正常。 问题出现了,当我订阅这个新的修改后的可观察对象时,它按顺序发出值,而不是整个对象数组。 但我想要修改后的对象数组。

this.statusObj = this.store.select(s => s.userStore.data);
this.statusObj.subscribe(rslt => {
    this.usrArr = rslt;
})

this.newstatusObj = from(this.usrArr);
this.newstatusObj2 = this.newstatusObj
    .pipe(map(() => {
        //////some modifications
        return
    }))

this.newstatusObj2.subscribe(val => {
    console.log(val);  //this line is emitting sequential values..but i want array of objects
})

【问题讨论】:

  • usrArr 的值是多少?

标签: angular rxjs rxjs-observables


【解决方案1】:

您无需使用.from(),它将根据您的数组将您的数据转换为多个排放。由于您的商店已经为您提供了一个包含要修改的数据的 observable,因此只需使用 .map() 修改它们,如下所示:

this.store.select(s => s.userStore.data)
    .pipe(map((rslt)=>{
        //DO YOUR MODIFICATION HERE.
    }))
    .subscribe(val=>{
        console.log(val) // now your data is in array of objects
    })

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-06-09
    • 1970-01-01
    • 1970-01-01
    • 2018-10-11
    • 2022-11-04
    • 1970-01-01
    • 1970-01-01
    • 2011-06-05
    相关资源
    最近更新 更多