Массив циклов, который генерирует вызов ajax, мне нужен первый вызов fini sh перед началом следующего - PullRequest
0 голосов
/ 12 января 2020

Просто я просто oop массив и отправляю данные с get в циклах, но я бегаю так быстро, что сервер перестает работать. Я мини Ddos сам делаю это. Как я могу заставить l oop ждать, пока вызовы не закончатся sh, возможно, добавив разрыв в 1 сек между циклами

$( document  ).on("submit", "#add_links", function() {
    var error = 0;
    var success = 0;
    var total = 0;

    //Gets data from input field
    var new_urls = $("#new_urls").val();
    var array_urls = new_urls.split("\n");
    var promiss = [];
    array_urls.forEach(function(entry) {

        var request = $.get("action.php",
        {
            add_link: "1",
            url: encodeURIComponent(entry.trim()),
        },
        function(data, status){
            console.log("Data: " + data + "\nStatus: " + status);
            if (data == 1)
            {
                success++;
                total++;
                //update fields removed in this post
                $("#success_count").html((success));
                $("#total_count").html((total));
            }
            if (data == 2) {
                error++;
                total++;
                //update fields removed in this post
                $("#error_count").html((error));
                $("#total_count").html((total));
            }
        });
        promiss.push(request);

    });
    $.when.apply(null, promiss).done(function(){
        //do something when done;
    });
    return false;
});

1 Ответ

0 голосов
/ 12 января 2020

Для этого можно использовать функцию recursive.

Пример

$(document).on("submit", "#add_links", function() {
  var error = 0;
  var success = 0;
  var total = 0;
  var new_urls = $("#new_urls").val();
  var array_urls = new_urls.split("\n");
  var promiss = [];
  let index = 0;
  function sendAjaxCall() {
    if(count >= array_urls.length)  return;
    var request = $.get(
      "action.php",
      {
        add_link: "1",
        url: encodeURIComponent(array_urls[index].trim())
      },
      function(data, status) {
        console.log("Data: " + data + "\nStatus: " + status);
        if (data == 1) {
          success++;
          total++;
          $("#success_count").html(success);
          $("#total_count").html(total);
        }
        if (data == 2) {
          error++;
          total++;
          $("#error_count").html(error);
          $("#total_count").html(total);
        }
        count++;
        promiss.push(request);
        sendAjaxCall();
      }
    );
  }
  $.when.apply(null, promiss).done(function() {
    $("#close_bug_reportwindow").html(
      "Import done, close tab by clicking here"
    );
    $("#close_icon").html('(<i class="fas fa-times"></i>)');
    $("#progress").remove();
  });
  return false;
});

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...