使用管道运算符时可以跟踪值吗?

时间:2019-07-09 10:16:00

标签: rxjs rxjs-pipeable-operators

有没有一种方法可以通过管道运算符来跟踪值?

举一个具体的例子,让我说:
通过数据流 S

  1. 记住 S 当前数据
  2. 发出HTTP请求
  3. 用响应做事
  4. 使用操作结果发出另一个HTTP请求
  5. 创建一个对象,该对象包含基于 1。和响应
  6. 的值。

然后将它们合并并利用我创建的对象。

基本上,

    function myFunc()
      local name = debug.getinfo(1, "n").name
      print(debug.traceback("Stack trace"))
      return name
    end

Related stackblitz

对此事的任何投入将不胜感激。


注意:如果可能的话,我不希望通过在顶部创建一个对象来保持我需要的值。

1 个答案:

答案 0 :(得分:1)

您只需重组操作员并将memorized设为局部变量即可轻松实现:

const data = from([1, 2, 3]).pipe(
  // Memorize here
  mergeMap(memorized => req1(memorized).pipe(
    flatMap(a => a),
    map(b => syncOp(b)),
    map(c => req2(c)),
    flatMap(d => d),
    map(e => ({id: memorized, value: e}))
  ));

merge(data).subscribe(f => console.log(f.id, f.value));