Как выполнить несколько GET-запросов последовательно?

В цикле делаю n-запросов к серверу. Каждый запрос выполняется больше 2-х минут. Все вроде бы хорошо, но ассинхронность jquery ставит мне палку в колёса. Данный код почему то выполняется ассинхронно, хотя я специально сделаю синхронные вызовы. Что я делаю не так?

for (let i = 0; i < counter; i++) {
    (function(index) {
      $.ajax({
          url: "/suggestions",  
        type: "GET",
        data: {pagetoken:pagetoken_, usertoken:usertoken_, adstoken:adstoken_,parentbm:parentbm_, proxy:proxy_},
        success: function(data) {
           //вывод данных
        },
        timeout: 300000 

      })
    })(i);

Ответы (2 шт):

Автор решения: Vadim

Первый путь, можешь просто убрать у ажахса асинхронность, а т.е. просто добавь async: false

Вот твой код в синхроне:

for(let i = 0; i < counter; i++){
    $.ajax({
        url: '/suggestions',
        type: 'GET',
        timeout: 300000,
        async: false,
        data: {
            pagetoken: pagetoken_,
            usertoken: usertoken_,
            adstoken: adstoken_,
            parentbm: parentbm_,
            proxy: proxy_
        },
        success: (r)=>{
            console.log('end');
        },
    });
}

Второй путь - получше, делать его нужно так(да и я бы так сделал):

const getPage=(_url)=>{
    return new Promise((resolve)=>{
        $.ajax({
            url: _url,
            type: 'GET',
            async: true,
        }).done((r)=>{
            if(!r)r = false;
            // resolve(r);
            resolve(true);
        }).catch((e)=>{
            console.log(e.status, e.responseText, e);
            resolve(false);
        });
    });
};

(async()=>{
    let r = await afetch('https://www.google.ru/');
    console.log('response 1', r);
    r = await afetch('https://www.google.com/');
    console.log('response 2', r);
})();

Или вместо r=await... умножить на N, можно собрать массив и уже использовать ЭТО (promise all)

→ Ссылка
Автор решения: Давид Манжула

jQuery поддерживает async/await.

// Оборачиваем в async-замыкание, чтоб использовать await
(async () => {

  for (let i = 0; i < counter; i++) {
    const data = await $.ajax({
      url: "/suggestions",  
      type: "GET",
      data: {
        pagetoken: pagetoken_,
        usertoken: usertoken_,
        adstoken: adstoken_,
        parentbm: parentbm_,
        proxy: proxy_,
      },
      timeout: 300000,
    });

    //вывод данных
    console.log(data);
  }

})();
→ Ссылка