• JQuery как добится окончания всех запросов ajax в цикле?

    RubaXa
    @RubaXa
    carbonate а что вы ожидаете? У вас код асинхронный, а результат вы пытаетесь синхронно получить. Как выше уже неоднократно написали, нужно использовать `$.Deferred`, единственно, что добавлю это `$.when` + `then` и код станет завершенным:

    function doIt(url) {
      return $.post(url).then(function (res) {
        var result = '';
    
        var queue = $('table tr', res).map(function () {
          var url = $(this).find('a').prop('href');
    
          return $.get(url, function (res) {
            result += $('#block', res).text();
          });				
        });
    
        return $.when.apply($, queue).then(function () {
          return result; 
        });
      });
    }
    
    // Используем
    doIt('/x').then(function (result) {
      alert(result); 
    });
    Ответ написан
    Комментировать