Задать вопрос
@fury2006

JS выход из for если внутри вызов функции ajax async с callback?

Помогите разобраться как можно прервать цикл и при этом вернуть результат функции внутри цикла.
Но есть нюанс: в цикле вызов функции в которой в свою очередь асинхронный ajax запрос и собственно callback
Вот не получается прервать цикл когда результат не пустой.

function sample(arr) {
  var results;
  searching:
  for (let i = 0; i < arr.length; i++) {
         results = searchingIdByName(arr[i], code, function(results) {
                        if (results !== undefined && results.id !== undefined) {
                                return results;
                        }
          });

          //тут всегда results undefined
          if (results !== undefined && results.id !== undefined) {
               console.log(results);
               break searching;
           }
  }
}
function searchingIdByName(param, code, callback) {
        $.ajax({
            url: "...",
            dataType: 'jsonp',
            type: "GET",
            delay: 250,
            data: {q: param },
            success: function(data) {
                let results = data;
                return callback(results);
            }
        });
    }
  • Вопрос задан
  • 141 просмотр
Подписаться 1 Средний 1 комментарий
Ответ пользователя Dima Polos К ответам на вопрос (2)
dimovich85
@dimovich85 Куратор тега JavaScript
https://u-academy.net/
Нужно перевести это на промисы, и дальше, возможно, использовать for await of (как один из вариантов), но сразу надо думать о поддержке браузеров, хотя по идее уже все должны уметь.
Ответ написан