Код JavaScript работает в режиме отладки и не работает в выпуске

#javascript #jquery #asynchronous #promise #filereader

#javascript #jquery #асинхронный #обещание #filereader

Вопрос:

Я пытаюсь выполнить проверки для файла csv, который загружается при чтении файла, для которого я использую FileReader()

Вся логика отлично работает в режиме отладки, но не работает в выпуске.

             var reader = new FileReader();
            reader.readAsBinaryString(file);
            var allTextLines;


                new Promise(function(resolve, reject) {
            allTextLines = reader.result.split(/r/);
            setTimeout(() => resolve(allTextLines), 1000); // (*)

        //  return allTextLines;

        }).then(function(result) { // (**)

            alert(result); // 1
            var headers = result[0].split(',');
            return headers;
            //return result * 2;

        }).then(function(headers) { // (***)

            alert(headers); // 2
            var massUploadCount = 0;
                 for (var i = 1; i < allTextLines.length - 1; i  ) {

                     var data = allTextLines[i].split(',');
                     if (data.length == headers.length) {


                         var tarr = [];
                         for (var j = 0; j < headers.length; j  ) {
                             if (headers[j].toUpperCase().trim() === 'ITEM NUMBER') {
                                 var itemNum_regex = /^[d]{0,10}$/;
                                 if (!(itemNum_regex.test(data[j]))) {
                                     console.log("hello from polo");
                                     massUploadCount  ;
                                     com.ws.mdmui.common.showDialog("Error", 'Please enter correct value for '   headers[j]   ' in row '   i);
                                     return;
                                 } else {
                                     tarr.push(data[j]);
                                 }
                             }
             }
         }
     }

     return massUploadCount;

        });
  

Комментарии:

1. Режим отладки чего? Браузер? Выпуск где? На сервер? Также я не вижу, чтобы вы использовали onload/onloadend событие для вашего filereader, которое вызовет временные сбои, поскольку вы не будете знать, когда файл действительно был прочитан

2. режим отладки в браузере Chrome. релиз означает обычно, когда я пытаюсь загрузить файл csv и проверить проверки без точек останова в Chrome. Также я использовал функцию onloadend , это не имело никакого значения

3. alerts вероятно, вы испортили бы фактические результаты… чего вы ожидаете от alert(result); // 2

4. @JaromandaX я исправил это, это опечатка

5. вероятно, у вас есть что-то среднее между reader.readAsBinaryString(file); и new Promise(function(resolve, reject) , что вы не показали, потому что для асинхронного прослушивателя событий onload нет reader.readAsBinaryString(file); — или, вы, должно быть, просматриваете код, который вы разместили в каком-то отладчике