是什么导致 console.timeEnd() 中出现“myTimer 不存在”错误?

6 javascript

我已经为 RxJS 方法创建了一个演示scan(),但不幸的是我的计时器无法正常工作,并且出现此错误:Timer 'myTimer' does not exist

console.time('myTimer');

let source = Rx.Observable
    .interval(100) // interval starts from 0
    .take(4)
    .scan((acc, val) => acc + val);

source.subscribe((value) => {
    console.timeEnd('myTimer');
    console.log('in next. Value: ', value);
});
Run Code Online (Sandbox Code Playgroud)

这是 JSBin 中的演示。

这是我从中复制代码的来源。

如何解决这个问题?

Jam*_*iec 5

您可能正在打电话timeEnd()多次拨打电话。

一旦停止计时器,console.timeEnd("name")使用 chrome 时它就不再存在。

console.time("myTimer");
for(var i=0;i<10000;i++){
}

console.timeEnd("myTimer"); // works
console.timeEnd("myTimer"); // displays an error (in chrome only)
Run Code Online (Sandbox Code Playgroud)

这几乎就是你的代码正在做的事情。第一次subscribe称为计时器输出自启动以来的时间量。在随后的 3 个调用中,它不起作用。

此行为特定于 Chrome,它在 IE 和 Firefox 中的工作方式与您期望的一样。