2015-12-10 3 views
0

Я использую Papa Parse для чтения файлов CSV, которые обычно имеют много повторяющихся строк. Через обратный вызов STEP каждая строка отправляется в API, который проверяет, является ли строка дубликатом, прежде чем добавлять ее в базу данных MySQL. Проблема в том, что Papa Parse запускает следующую строку (и запрос POST) до того, как предыдущая добавлена ​​в базу данных. Увидев, что повторяющиеся строки часто близки друг к другу, я получаю дубликаты записей в моей базе данных. Разве это разрешимо в Папском Парсе?Papa Parse слишком быстро

Возможное решение. Пусть JSON скомпилирует и передаст каждую строку функции Async, которая ждет завершения каждого запроса POST.

$.get('file.csv', function(data) { 
    Papa.parse(data, { 
     header: true, 
     skipEmptyLines: true, 
     step: function(results, parser) { 
      var product = results.data[0]; 
      $.ajax({ 
       url: '/api/create', 
       type: 'POST', 
       data: $.param({'product':product}), 
       success: function(result) { 
        console.log(result); 
       } 
      }); 
     } 
    }); 
}); 
+0

Использование Javascript задержки ([проверить здесь, как] (https://developer.mozilla.org/en-US/docs/Web/API/WindowTimers/setTimeout)) .... без кода , экземпляры или даже детали, мы не можем помочь – Bonatti

+0

Не могли бы вы использовать какую-то форму блокировки? – Jire

+0

Прежде всего вы должны обеспечить уникальность ограничений уровня базы данных, вы не можете доверять клиенту API, чтобы он всегда вел себя, даже если вы исправили эту проблему. –

ответ

0

Papa Анализировать поддерживает pausing и resuming (возможно нит, когда отвечал на ваш вопрос). Соответственно, вы приостанавливаете и возобновляете использование pause() и resume(). Например:

step: function(results, parser) { 
     parser.pause(); 
     //do your stuff that needs to complete before next row is given 
     parser.resume(); 
    } 
Смежные вопросы