gpt4 book ai didi

javascript - 从 RxJS promise 流

转载 作者:行者123 更新时间:2023-11-30 16:40:11 25 4
gpt4 key购买 nike

我正在尝试在我根据 promise 创建的流上运行 reduce

在下面的示例中,myApi.getItemsAsync() 返回一个数组。

我希望 reduce 回调会针对数组中的每个单独项目调用。相反,它被整个数组调用。

Rx.Observable.fromPromise(
myApi.getItemsAsync()
)
.reduce(function (acc, item) {
// expecting `item` to be a single item
// instead, seeing the entire array
}, [])
.subscribe(function (result) {
console.log(result);
});

如果 myApi.getItemsAsync() 是一个返回数组的同步函数,则 reduce 按预期工作,调用数组中每个项目的回调。

我如何让它与 promises 一起工作?

最佳答案

reduce正在处理整个流,而不是作为其中一部分发出的数组。

如果你想使用数组方法,那么它应该是

Rx.Observable.fromPromise(myApi.getItemsAsync())
.map(function(array) {
return array.reduce(function (acc, item) {
return …;
}, []);
})

如果您希望使用流方法,则需要先将数组项注入(inject)流中。我想在你的同步版本中你使用了 fromArray .连同 promise ,你会做

Rx.Observable.fromPromise(myApi.getItemsAsync())
.flatMap(function(array) {
return Rx.Observable.fromArray(array);
}).reduce(function (acc, item) {
return …;
}, [])

关于javascript - 从 RxJS promise 流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32125056/

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