在redux-observable中,如何在完成运行时测量史诗的持续时间?

时间:2018-01-10 08:18:43

标签: redux-observable

在大多数情况下,史诗会听一个动作并发出一个动作,其中有很多异步任务。我想测量动作和动作之间的史诗的持续时间。我怎么能这样做?

1 个答案:

答案 0 :(得分:1)

您可以使用Performance.now()来衡量任务之间的时间:

var t0 = performance.now();
doSomething();
var t1 = performance.now();
console.log("Call to doSomething took " + (t1 - t0) + " milliseconds.");

在您的动作和史诗的上下文中,您可以在初始操作中包含时间戳,然后稍后调用Performance.now(),从第二个中减去第一个测量值。那是你们之间的差距。

作为一个例子,这个测量从ajax请求之前到ajax响应之后返回并创建了新操作:

action$.pipe(
  ofType("PING"),
  switchMap(action => {
    const before = Performance.now();

    return ajax.getJSON("/ping").pipe(
      map(pong => {
        const after = Performance.now();
        return { type: "PONG", delta: after - before };
      })
    );
  })
);