fleshherbal
@fleshherbal

Как заполнить массив из CallBack из функции построчного ридера?

Всем привет, есть файл с 600к+ наименований в каждой строке.
Я выполняю функцию eachLine из 'line-reader'.
С каждым новой строки я пушу в пустой массив. Но Промис не дожидается заполнения и отправляет пустой массив при вызове функции.
Подскажите, что нужно сделать?

var allStrings = []; //массив который должен заполниться 
export const readLineFile = (path) => {
    if(path === undefined){
        console.log("ERROR: readLineFile(), no valid PATH or null! Path: "+path);
        return new Promise((_, reject)=>{reject("error")})
    }
    return new Promise((resolve, reject)=>{
        try {
            lineReader.eachLine(path, (line, last)=>{
                console.log(line);
                allStrings.push(line); // заполнение массива
            });
            resolve(allStrings);
    
        } catch (error) {
            console.log(`ERROR: readLineFile(). Message: ${error.message}`);
            reject("error");
        }
    });
}


Дальше получаю результат:

app.get("/get", (req, resp)=>{
        try {
            if(req.query.type === "searchReq"){
                readLineFile(path.resolve(__dirname, "searchRequest.txt"))
                .then(res=>{
                    resp.send(JSON.stringify(res));
                }).catch(e=>resp.send(e));                
            }
            else resp.send("-");
        } catch (error) {
            console.log("\r\n Error: "+error.message);
            resp.send("bad");
        }
    })
  • Вопрос задан
  • 41 просмотр
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы