我正在使用带有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
})
);
这两种解决方案都不是最理想的。当有很多步骤时,第一个变得难以操作,而第二个则受到操作问题的可能顺序的影响(并且它没有使用酷反应方法)。
还有哪些其他选择?
答案 0 :(得分:2)
您可以通过以下方式创建闭包:
obsveable$.pipe(
ofType('example'),
mergeMap(action =>
Observable.of(somethingElse)
.pipe(
map(other => anotherThing),
map(other => {
// use action
})
)
)
);