javascript - 如何使用 rxjs Observables 实现以下功能?

标签 javascript rxjs observable rxjs5

如何在 rxjs 中使用 Observables 实现以下代码?

我在这里想要实现的是我有一个函数数组,每个函数都接受一个对象,修改它并将该对象返回到堆栈中的下一个函数。

function A(res:SomeType){
    //Do Something
    return res;
}

function B(res:SomeType){
    //Do Something
    return res;
}

function C(res:SomeType){
    //Do Something
    return res;
}

let fnPipe = [];

fnPipe.push(A); 
fnPipe.push(B);
fnPipe.push(C);

obj= {key:"val"};

fnPipe.forEach((fn)=>{
    obj= fn(obj);
});
console.log(obj);

如何在 rxjs 中使用 observables 实现相同的功能?

最佳答案

let fn$ = Observable.from([
  x => x + "a",
  x => x + "b",
  x => x + "c"
])
let value$ = Observable.of("x", "y", "z")

value$
  .concatMap(val => fn$.scan((acc, fun) => fun(acc), val))
  .subscribe(console.log)

/* prints
"xa"
"xab"
"xabc"
"ya"
"yab"
"yabc"
"za"
"zab"
"zabc" */

关于javascript - 如何使用 rxjs Observables 实现以下功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44626899/

相关文章:

javascript - 在 Angular 中动态加载组件

javascript - stub 未被调用

Angular 阻塞(同步)http 调用

angular - 如何使用 'merge' 来限制可观察值列表的并发性,但仅在所有可观察值完成后才返回?

javascript - Protractor :步骤不一一执行

Angular 7 - 嵌套 Observables

javascript - 单击按钮后取消订阅的 RXJS 方式,但有机会再次订阅

angular - RxJS - 每次收到新值时发出整个数组

Angular 在返回数据之前等待订阅完成

javascript - JS 中的自定义链接处理(无后续)