Показать сообщение отдельно
  #1 (permalink)  
Старый 28.01.2018, 17:56
Кандидат Javascript-наук
Отправить личное сообщение для Зосимов Посмотреть профиль Найти все сообщения от Зосимов
 
Регистрация: 11.02.2013
Сообщений: 102

Помогите оптимизировать код
Всем привет.
есть функция, которая отправляет данные на сервер из локальной Web SQL
function SendPost() { 
    
    db.transaction(function (tx) {
    tx.executeSql("SELECT keyNumber, itemNumber, curDate FROM items", [], function(tx, results) {                    
    
    if(results.rows.length > 0) {
                for(var i = 0; i < results.rows.length; i++) {  
                        var someArray = [results.rows.item(i).keyNumber, 
                results.rows.item(i).itemNumber,results.rows.item(i).curDate];
                        addArray(someArray);                     
                   }
            }

        });
    });

    function addArray(arr) {

        $.ajax({
           url: 'http://www.test.ru/add_to_base.php',
            dataType: 'text',
            type: 'post',
            contentType: 'application/x-www-form-urlencoded',
            data: ({knb:arr[0], inb:arr[1], cdt:arr[2]}),
            success: function( data, textStatus, jQxhr ){
                console.log(data);
            },
            error: function( jqXhr, textStatus, errorThrown ){
                   if(jqXhr.status&&jqXhr.status==400){
                    alert("Ошибка!: " + jqXhr.responseText); 
               }
               else if(jqXhr.status&&jqXhr.status==500){
                    alert("500 - ошибка подключения к серверу");
               }
               else{
                   alert("Something went wrong");
               }
            }
        }); 
 }

код работает, но есть вопросы:

1) как лучше оптимизировать, что бы не вызывать каждый раз функцию addArray(). или это нормально - на каждую запись отправлять POST?

2) в случае ошибки, как остановить выполнение кода? например при ошибке 500. Так как цикл уже запустился, то прервать работу SendPost() уже не получается

буду рад любым советам
Ответить с цитированием