Подтвердить что ты не робот

JQuery: можно дождаться окончания $.get до завершения загрузки?

Следующее script не ждет, пока $.get завершит загрузку страницы, прежде чем продолжить цикл:

$.each(data.songs, function(index, val) {
    $('#nowartist')
         .append('song starting');
    $.get("http://localhost/play.php", function(data){
         alert('done');
    });
});

- объект JSON

Всем приветствуются любые идеи или комментарии.

4b9b3361

Ответ 2

Если вы не хотите потенциально блокировать браузер, вы можете сделать это таким образом, который просто продолжает прослушивать песни до тех пор, пока они не будут обработаны.

function play_next(){
   var song = data.songs.shift(); // Removes the first song and stores it in song

   $('#nowartist').append('song starting');

   $.get("http://localhost/play.php", function(ret_data){
      alert('done');
      if(data.songs.length) play_next(); // Call next song if more songs exist;
   });
}
play_next(); // Start it off

Обратите внимание, что он изменяет массив data.songs, удаляя элементы при обработке. Если это проблема, дублируйте массив перед запуском, чтобы удалить элементы из дублированного массива.

На стороне примечания, я предполагаю, что вы не вставляли весь свой код... прямо сейчас он загружает одну и ту же страницу для каждой песни, но ничего из элемента song не используется для изменения запроса в любом путь.