Home > Back-end >  Use Ajax response to skip a loop iteration in Jquery
Use Ajax response to skip a loop iteration in Jquery

Time:06-30

I am trying to skip a loop iteration based on the ajax response. The problem I'm facing is that I'm unable to use the response from Ajax outside the Ajax call. Currently I solved it by using the below solution but here the problem is that I'm using async: false which is not recommended as Ajax call is async.

function ajaxCallHere(name) {
    let url = '/admin/someUrl/'   name;
    var skipName = '';
    $.ajax({
        'url': url,
        'type': 'GET',
        async: false,
        'success': function (data) {
            skipName = data.skip;
        }
    });
    return skipName;
}

function getAllNames() {
    for (let i = 0; i < names.length; i  ) {
        var skipVal = ajaxCallHere(names.fullName);

        if(skipVal == 'yes') {
            continue;
        }
    }
}

CodePudding user response:

Use async/await, since $.ajax returns an object that obeys the Promise protocol.

function ajaxCallHere(name) {
  let url = '/admin/someUrl/'   name;
  return $.get(url);
}

async function getAllNames() {
  for (let i = 0; i < names.length; i  ) {
    var data = await ajaxCallHere(names.fullName);
    if (data.skipVal == 'yes') {
      continue;
    }
  }
}

  • Related