我试图在下面的示例中缩减我的用例。
我被困在我需要传递应该有的操作员结果的地方
- 运算符的输入传递
- 和内部延迟操作的结果
concatMap
。
这样我就可以使用下一个运算符。
import { of, from, defer } from 'rxjs';
import { mergeMap, filter, concatMap, map, reduce } from 'rxjs/operators';
const list: number[] = [1, 2, 3, 4, 5, 6];
function testFunctionPromise(value: number) {
return () => {
return new Promise((resolve, reject) => {
setTimeout(() => {
return resolve('processed-value ' + value);
}, 1000);
});
}
}
from(list)
.pipe(
filter((item: number) => item % 2 === 0),
concatMap((item: number) => {
const pf = testFunctionPromise(item);
/**
* QUESTION: from this step I want to pass both
* the result of defer(pf); and item
*
* as
*
* return { item: <result of defer(pf)> }
*
*/
return defer(pf);
}),
reduce((acc: any[], item: any) => acc.concat([item]), [])
)
.subscribe(
data => console.log({ data }),
error => console.error({ error })
)