gpt4 book ai didi

javascript - RxJS 减少不会继续

转载 作者:数据小太阳 更新时间:2023-10-29 05:01:04 25 4
gpt4 key购买 nike

为什么 flatMap 不会触发下游缩减?

我得到的代码如下:

handleFiles.flatMap(files =>
Rx.Observable.from(files).
flatMap((file, i) => fileReader(file, i)).
reduce((form, file, i) => {
form.append('file[' + i + ']', result);
console.log('reduce step', file);
return form;
}, new FormData()).
tap(console.log.bind(console, 'after reduce'))
).
subscribe(console.log.bind(console, 'response'));

问题是“减少后”抽头永远不会被击中。为什么?

日志是这样的:

reduce step [data]
reduce step [data]

截图:

Error screenshot

最佳答案

问题不在flatMap;这就是 reduce 的工作方式。

reduce读取整个流并将其缩减为单个值,仅在源流关闭时发出。如果您的 from(files) 流没有结束,那么 reduce 将永远不会输出它的值。

尝试使用 scan反而;它发出每个中间步骤,似乎就是您要查找的内容。

关于javascript - RxJS 减少不会继续,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33595954/

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