javascript - how to execute sets of ajax calls parallel in jquery -


i want make parallel ajax calls in click event, each ajax call distinct operation , returns data needed display tasks status or response message. working 1 after another, need execute parallel.

please give me idea that?

here example: js fiddle

i have loaded large csv data json object split multiple smaller json objects. let 1000 records divided 10 sets, each set contains 10 records. want process 10 sets parallel , execute ajax calls on each record parallel.

        var examplejsondata='[{"firstname":"cairistiona","lastname":"piaggia"},{"firstname":"wilson","lastname":"dega"},{"firstname":"rawsil","lastname":"agg"},{"firstname":"stiona","lastname":"piggia"}]';          $(".btntasks").click(function () {              var totalrecordscount = 1000;              var tasks = 10;              var temp = 1;              var oldtime = new date();              (var = 1; < tasks; i++) {                  var taskcontainerid = "task-container-" + i;                  var htmlcontent = $("#sessionstatus").html();                  htmlcontent = htmlcontent.replace(/{index}/g, i);                  $(".taskresp").append('<div id="' + taskcontainerid + '" class="col col-sm-4">' + htmlcontent + '</div>');                  var recstart = (i == 1 ? 0 : (temp + 1)), recend = (tasks * i);                  temp = recend;                  $("#totalrecords-" + i).text(recend)                    processtask(i, taskcontainerid, recstart, recend);                                }                function processtask(index, taskcontainerid, recstart, recend) {                  var takenjson = examplejsondata;                  //json.parse($("#csvdata").val()).slice(recstart, recend);                  $("#totalrecords-" + index).text(takenjson.length);                    var objjson = $.extend(json.parse(json.stringify(userloginfields)), json.parse(json.stringify(recipientorlenderfields)), json.parse(json.stringify(payerorborrowerfields)), json.parse(json.stringify(mortgageloaninfofields)));                  $.each(objjson, function (key, value) { objjson[key] = ""; });                    $.each($(".ddl-mapcolumns option:selected"), function () {                      var mapindex = $(this).attr("data-csv-header-index");                      if ($(this).val() == -1) { mapindex = -1; }                      objjson[$(this).val()] = mapindex;                  });                    mapfieldsindex=json.stringify(objjson);                    function sendmessage(position) {                      var data = { "csvdata": "[" + json.stringify(takenjson[position]) + "]", "mapfieldsindex": mapfieldsindex, "scan": position };                      $.ajax({                          url: '/import/index/',                          data: data,                          method: 'post',                          async: true,                          success: function (result) {                              if (result.position <= takenjson.length) {                                  var oldpercentage = math.ceil((position / takenjson.length) * 100);                                  var newpercentage = math.ceil((result.position / takenjson.length) * 100);                                  var elapsedtime = getelapsedtime(oldtime);                                  $("#circle-div-" + index).attr("class", "c100 p" + newpercentage + " big");                                  var percentagetext = ((result.position == takenjson.length) ? "<i class='fa fa-check fa-1x text-success'></i>" : newpercentage + "%");                                  $("#circle-percentage-" + index).html(percentagetext);                                  $("#elapsedtime-" + index).html(elapsedtime);                                  var trtextcolor = result.recstatus.indexof("successfully") > 0 ? "color:green;" : "color:red;";                                  $("#msgid-" + index).prepend("<tr style='" + trtextcolor + "'><td>" + (result.position + 1) + "> </td><td>" + result.recstatus + "<br/>" + result.error + "</td></tr>");                                  $("#currentimport-" + index).text(result.position);                                  sendmessage(result.position);                              }                              else {                                  $("#msgid-" + index).prepend("<tr style='color:red'><td>" + (result.position + 1) + "> </td><td>" + result.error + "</td></tr>");                              }                          }                        });                  }                  //$("#" + taskcontainerid).html(json.stringify(takenjson));                  sendmessage(recstart)              }            });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>          <button type="button" class="btntasks">run tasks</button>    <div class="taskresp"></div>  <div id="sessionstatus" style="display:none;">          <div class="=col col-sm-6 col-md-6 col-lg-6">              <div class="page">                  <div class="clearfix">                      <div class="c100 p0 big" id="circle-div-{index}">                          <span id="circle-percentage-{index}">0%</span>                          <div class="slice">                              <div class="bar"></div>                              <div class="fill"></div>                          </div>                      </div>                  </div>              </div>              <div class="col col-sm-12 count-section">                  <label>total records: <span id="totalrecords-{index}">--</span></label>                  <label>importing: <span id="currentimport-{index}">--</span><span id="elapsedtime">0 s</span></label>              </div>          </div>          <div class="=col col-sm-6 col-md-6 col-lg-6 import-list-status" style="font-size:10px;">              <table class="table table-bordered table-hover">                  <thead>                      <tr>                          <th>row</th>                          <th>status/ description</th>                      </tr>                  </thead>                  <tbody id="msgid-{index}"></tbody>              </table>          </div>      </div>


Comments

Popular posts from this blog

php - Vagrant up error - Uncaught Reflection Exception: Class DOMDocument does not exist -

vue.js - Create hooks for automated testing -

Add new key value to json node in java -