Angular 如何将AsyncScheduler与自定义操作一起使用

Angular 如何将AsyncScheduler与自定义操作一起使用,angular,rxjs,angular-aot,angular-compiler,Angular,Rxjs,Angular Aot,Angular Compiler,我要求RXJS流在页面不可见时以250毫秒的间隔处理数据块。Chrome正在将这些间隔限制为1000毫秒的间隔。为了解决这个问题,我实现了一个AsyncAction,它在web worker中使用setInterval。我使用它的方式如下: export const customScheduler=new AsyncScheduler(webworkerasyncation) 然而,这并非没有问题。当使用JIT编译时,它可以正常工作。当使用AOT(另一个项目要求)编译时,它在第一次编译时工作,但

我要求RXJS流在页面不可见时以250毫秒的间隔处理数据块。Chrome正在将这些间隔限制为1000毫秒的间隔。为了解决这个问题,我实现了一个AsyncAction,它在web worker中使用setInterval。我使用它的方式如下:

export const customScheduler=new AsyncScheduler(webworkerasyncation)

然而,这并非没有问题。当使用JIT编译时,它可以正常工作。当使用AOT(另一个项目要求)编译时,它在第一次编译时工作,但之后每第二次编译都会失败,并出现以下错误:

错误:错误:无法解析/ 来自/node_modules/rxjs/internal/scheduler/AsyncScheduler.d.ts 在TsCompilerAotCompilerTypeCheckHostAdapter.fromSummaryFileName(\node_modules@angular\编译器cli\src\transformers\compiler\u host.js:272:23) 在aotsummarysolver.fromSummaryFileName(\node_modules@angular\compiler\bundles\compiler.umd.js:26320:30) 在\节点_modules@angular\compiler\bundles\compiler.umd.js:24481:126 在Array.map()处 在FromJsonDeserializer.deserialize(\node_modules@angular\compiler\bundles\compiler.umd.js:24481:41) 在反序列化摘要(\node_modules@angular\compiler\bundles\compiler.umd.js:24086:29) 在AotSummaryResolver.\u加载SummaryFile(\node_modules@angular\compiler\bundles\compiler.umd.js:26370:26) 在AOTSumaryResolver.resolveSummary(\node_modules@angular\compiler\bundles\compiler.umd.js:26328:22) 在ToJsonSerializer.loadSummary(\node_modules@angular\compiler\bundles\compiler.umd.js:24310:48) 在ToJsonSerializer.visitStaticSymbol(\node_modules@angular\compiler\bundles\compiler.umd.js:24285:32) 在ToJsonSerializer.visitOther(\node_modules@angular\compiler\bundles\compiler.umd.js:24250:34) 在visitValue(\node)处_modules@angular\compiler\bundles\compiler.umd.js:2438:24) 在\节点_modules@angular\compiler\bundles\compiler.umd.js:2451:54 在Array.map()处 在ToJsonSerializer.ValueTransformer.visitArray(\node_modules@angular\compiler\bundles\compiler.umd.js:2451:24) 在visitValue(\node)处_modules@angular\compiler\bundles\compiler.umd.js:2429:28)


我认为这是使用“内部”RXJS包的一个怪癖,但如果不依赖AsyncHandler,我无法找到解决这个问题的方法。

您可以尝试以下方法:

import {asyncScheduler} from 'rxjs';

export const customScheduler = new asyncScheduler.constructor(WebWorkerAsyncAction);

通过这种方式,您不需要导入内部内容,但构造函数契约始终可以更改。不确定typescript是否知道本例中的签名以警告您。

我联系了RXJS的创建者,他们告诉我,不支持创建自定义调度程序,并且RXJS的调度程序区域将来可能会更改,因此不应在此基础上构建


为了绕过这个约束,我将代码重构为独立于框架的。我现在检查自上次emmition以来经过了多长时间,并检查在经过的时间内应该触发的值的正确数量。

不幸的是,这会导致与直接引用它相同的编译器错误。@user2266814真的吗?真奇怪。你能把整个错误、行号等都贴出来吗。?