可观察的运算符,用于以后提取值

时间:2018-03-10 17:47:39

标签: javascript rxjs reactive-programming

我正在使用带有RXJS库的observable,并且我想要提取一个值并在未来的未指定时间使用它,而不是下一个运算符或订阅方法。

我目前正在将值传递给每个操作,直到我需要它为止。看起来像这样:

obsveable$.pipe(
    ofType('example'),
    map((action) => [
        action, // <-- passing this through
        somethingElse
    ]),
    map(([action, other]) => [
        action, // <-- through again
        anotherThing
    ]),
    map(([action, other]) => {
        // finally use action
    }),
);

我可能会尝试将其保存到本地变量 - 就像这样:

let action;
obsveable$.pipe(
    ofType('example'),
    map((_action) => action = _action),
    map((action) => action.somethingElse),
    map((other) => {
        // finally use action
    })
);

这两种解决方案都不是最理想的。当有很多步骤时,第一个变得难以操作,而第二个则受到操作问题的可能顺序的影响(并且它没有使用酷反应方法)。

还有哪些其他选择?

1 个答案:

答案 0 :(得分:2)

您可以通过以下方式创建闭包

obsveable$.pipe(
    ofType('example'),
    mergeMap(action => 
        Observable.of(somethingElse)
            .pipe(
                map(other => anotherThing), 
                map(other => { 
                    // use action
                })
            )
    )
);