Как использовать AsyncScheduler с пользовательским действием - PullRequest
0 голосов
/ 19 сентября 2019

У меня есть требование, чтобы мой поток RXJS обрабатывал порции данных с интервалами 250 миллисекунд, когда страница не видна.Chrome регулирует эти интервалы до 1000 миллисекунд.Чтобы обойти это, я реализовал AsyncAction, который использует setInterval внутри веб-работника.Я использую его следующим образом:

export const customScheduler = new AsyncScheduler(WebWorkerAsyncAction)

Однако это не обошлось без проблем.При компиляции с использованием JIT все работает нормально.При компиляции с помощью AOT (другое требование проекта) Он работает для первой компиляции, однако каждая вторая компиляция после этого завершается с ошибкой:

ОШИБКА в: Ошибка: не удалось разрешить ./ from / node_modules/rxjs/internal/scheduler/AsyncScheduler.d.ts в TsCompilerAotCompilerTypeCheckHostAdapter.fromSummaryFileName (\ node_modules @ angular \ compiler-cli \ src \ transformers \ compiler_host.js: 272: 23 \ имя_файлаbundles \ compiler.umd.js: 26320: 30) в \ node_modules @ angular \ compiler \ bundles \ compiler.umd.js: 24481: 126 в Array.map () в FromJsonDeserializer.deserialize (\ node_modules @ angular \ compiler \ bundles\ compiler.umd.js: 24481: 41) в deserializeSummaries (\ node_modules @ angular \ compiler \ bundles \ compiler.umd.js: 24086: 29) в AotSummaryResolver._loadSummaryFile (\ node_modules @ угловой \ compiler \ bundles \ compiler.umd).js: 26370: 26) в AotSummaryResolver.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) в \ node_modules @ angular \ compiler \ bundles \ compiler.umd.js: 2451: 54 в Array.map () в ToJsonSerializer.ValueTransformer.visitArray (\ node_modules @ angular \ compiler \ bundles \ compiler.umd.js: 2451: 24) at visitValue (\ node_modules @ angular \ compiler \ bundles \ compiler.umd.js: 2429: 28)

Я предполагаю, что это извращение использования «внутренних» пакетов RXJSно я не могу обойти это, не полагаясь на AsyncHandler.

1 Ответ

1 голос
/ 19 сентября 2019

Вы можете попробовать что-то вроде:

import {asyncScheduler} from 'rxjs';

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

Таким образом, вам не нужно импортировать внутренние вещи, но, тем не менее, контракт конструктора всегда может измениться.Не уверен, что машинопись знает подпись в этом случае, чтобы предупредить вас.

...