В моем Javascript закончились асинхронные идентификаторы? (RangeError в inspector_async_hook.js) - PullRequest
0 голосов
/ 02 ноября 2019

Сначала я использую async и очень часто жду и получаю эту ошибку:

RangeError: Value undefined out of range for undefined options property undefined
    at Set.add (<anonymous>)
    at AsyncHook.init (internal/inspector_async_hook.js:19:25)
    at PromiseWrap.emitInitNative (internal/async_hooks.js:134:43)

И я не знаю, как я могу это исправить, я пишу свой код полностью в Typescript, и я не создал файл, которыйназывается 'async_hooks'.

И я не запускаю более 10 асинхронных функций одновременно, я использую await очень часто, поэтому он не должен складываться, но javascript, похоже, не уменьшает asyncId и не достигает предела числа очень быстро.

Я пытался использовать меньше асинхронного ожидания, но это не решило проблему, но ошибка появляется позже. Если я использую меньше асинхронного ожидания, я могу предотвратить появление этой ошибки, пока функция не завершит работу. (Я использую Electron 7)

Кажется, что у Electron очень низкий асинхронный пул, но он может быть воспроизведен с помощью стандартного машинописного кода:

class Test {
    private async testCompare(a,b):Promise<boolean> {
        return a == b;
    }

    public async testRun():Promise<void> {
        for (let index = 0; index < 999999999; index++) {
            for (let index2 = 0; index2 < 999999999; index2++) {
                await this.testCompare(index,index2)
            }
        }
    }

}
new Test().testRun();

Этот код очень часто используется в оперативной памяти, иЯ думаю, у меня та же проблема в моей программе. Я думаю, что асинхронный пул заполняется, пока не достигнет своего предела.

...