gpt4 book ai didi

javascript - RxJs 从 promise 扩展数组

转载 作者:搜寻专家 更新时间:2023-10-30 21:29:42 24 4
gpt4 key购买 nike

我是 RxJs 的新手,需要一些帮助来理解如何让它工作:

  let myObs= Observable.fromPromise(this.storage.get('storageKeyForArray'))
.map(a=>Observable.from(a)) //does this blow up if array is null?
.map(e=>doSomethingWithElement(e)) //flatMap?
...
;

myObs.first().subscribe((initializedArray) => {
this.stuff= initializedArray;
this.initialized = true;
});

这就是我想要做的:

  1. 从本地存储加载数组
  2. 对数组的每个元素执行异步查找
  3. 等待所有元素查找完成
  4. 组合回(现已完全初始化的)数组
  5. 对数组进行排序(这可以在第一步之后随时完成)

最佳答案

你需要这样的东西:

Observable.fromPromise(asyncLoadArrayOperation())
.flatMap(x => Observable.from(x))
.flatMap(x => someAsyncFunction(x))
.toArray()
.subscribe(x => ...)

flatMap(x => Observable.from(x)) - 假设 x 是一个数组,Observable.from 返回一个 Observable,一个一个地发射数组的项目。 flatMap 运算符将扁平化此 Observable,这意味着下一个运算符将获取项目而不是项目的 Observable(如果使用“ map ”)。

flatMap(x => someAsyncFunction(x)) - 在这种情况下,flatMap 用于获取 someAsyncFunction promise 执行结果。同样,如果您使用“ map ”,它会发出 Promise。

toArray() - 此运算符收集所有项目,直到源 Observable 完成,然后发出一项 - 所有项目的数组。

关于javascript - RxJs 从 promise 扩展数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43430536/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com