Почему поток запросов заканчивается до обработки всех асинхронных элементов при использовании Node и OracleDB - PullRequest
0 голосов
/ 20 марта 2020

У меня есть код, похожий на этот ....

return connection.queryStream(
    config.query,
    params
);

Тогда у меня есть считыватель потока

class SearchStream{
    constructor(ws, ...){
        this.ws;
        this.stream.on("data", this.onStreamItem.bind(this));
        this.stream.on("error", this.onStreamError.bind(this));
        this.stream.on("end", this.onStreamEnd.bind(this));
    }
    onStremEnd(){
        this.ws.close();
    }
    onStreamItem(item){
        setTimeout(()=>{
            this.ws.send(...);
        }, 5000)
        // returns promise is real world
    }
}

Проблема здесь в том, что конец потока вызывается перед setTimeouts закончились и сообщения потеряны. Могу ли я дождаться запуска Stream End, пока все обещания не будут выполнены?

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