Остановить функцию обратного вызова при определенных условиях - PullRequest
0 голосов
/ 28 августа 2018

Я читаю данные из файла excel, используя 'exceljs' npm. В приведенной ниже функции, когда в значении есть ноль, я хочу вернуть номер строки и завершить функцию.

workbook.xlsx.readFile(request.path).then(function () {
        // use workbook
        let worksheet = workbook.getWorksheet('worksheet');
        worksheet.eachRow(function(row, rowNumber){
            console.log("Row " + rowNumber + " = " + JSON.stringify(row.values));
            if(row.values[1] == null || row.values == undefined) {
                // return rowNumber here and end the function.
            }
        });
    });

Это то, что я делал. 'request.path' содержит путь к файлу. Все работает, мне просто нужно завершить worksheet.eachRow() при условии, указанном в коде.

1 Ответ

0 голосов
/ 29 августа 2018

eachRow() функция довольно проста и не делает ничего особенно волшебного. Самым простым решением было бы просто сделать цикл самостоятельно.

workbook.xlsx.readFile(request.path).then(function () {
    // use workbook
    let worksheet = workbook.getWorksheet('worksheet');
    for (var rowNumber = 0; rowNumber < worksheet.rowCount; rowNumber++) {
        row = worksheet.getRow(rowNumber);
        console.log("Row " + rowNumber + " = " + JSON.stringify(row.values));
        if(row.values[1] == null || row.values == undefined) {
            // return rowNumber here and end the function.
        }
    }
});

Обратите внимание, что функция eachRow() по умолчанию пропускает пустые строки, поэтому хотя бы одно из ваших условий никогда не будет выполнено.

...