Как удалить слушателя событий в NodeJS? - PullRequest
0 голосов
/ 08 мая 2020

Я не могу понять, как это должно быть реализовано. Каждый раз, когда я пытаюсь, он либо жалуется, что removeEventListener не является функцией, либо какая-то другая случайная ошибка. В настоящее время это используется в контексте того, что блоки данных записываются в файл, и мне нужно время от времени использовать слив, а затем удалить прослушиватель стока. Я получаю сообщение об ошибке

(node:8996) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 drain listeners added to [WriteStream]. Use emitter.setMaxListeners() to increase limit

, а затем, в конце концов, исчерпает память кучи для JavaScript. Я пытаюсь не увеличивать разрешенную память, но если это единственное, что я могу сделать, дайте мне знать

Мой текущий код выглядит так, потому что я понятия не имею, что делаю

fileWrite: async function AddressesToFile(chunk, fileS, done) {
    console.log("Writing chunk in");

    var writeCon = true;

    //Writes the chunk into the output filestream
    for (var i=0;i<chunk.length;i++) {
        //Split the address line along the custom separators used
        for (var ii=0;ii<chunk[i].split("(|S|)").length;ii++) {
            if (ii == 0) {
                //Add quotes around the first element (the original address string)
                writeCon = fileS.write('"' + chunk[i].split("(|S|)")[ii] + '",');
            } else if (ii == chunk[i].split("(|S|)").length-1) {
                //Add a newline after each element
                writeCon = fileS.write(chunk[i].split("(|S|)")[ii] + '\n');
            } else {
                //Add a comma after last element
                writeCon = fileS.write(chunk[i].split("(|S|)")[ii] + ',');
            }
        }
    }

    if (!writeCon) {
        fileS.once('drain', (drain) => fileS.removeEventListeners('drain', (drain) => console.log('Drained')));
    }

    //If we have sent the last chunk through, close the file stream
    /*if (done) {
        fileS.end();
        extractDone = true;
    }*/

},

Исходные данные считываются в форме неочищенных адресов, мой код превращает их в строки с неочищенным адресом, почтовым кодом, найденными компонентами и множеством найденных компонентов, прикрепленных к нему, которые затем записываются в файл назначения

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...