jQuery: Possível esperar por $ .get para concluir o carregamento antes de continuar?

O script seguinte não espera pelo $ .get para concluir o carregamento da página antes de continuar com o loop:

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

data é um object JSON

Quaisquer idéias ou comentários serão muito apreciados.

 $.ajax({ async: false, type: 'GET', url: 'http://localhost/play.php', success: function(data) { //callback } }); 

Isso deve resolver.

http://docs.jquery.com/Ajax/jQuery.ajax#options

Se você não quisesse bloquear o navegador, poderia fazê-lo dessa maneira, o que não pára de acontecer até que todos sejam processados.

 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 

Observe que ele altera o array data.songs removendo itens durante o processamento. Se isso for um problema, duplique o array antes de iniciar, para que ele remova elementos do array duplicado.

Em uma nota lateral, estou supondo que você não colou todo o seu código … agora ele carrega a mesma página para cada música, mas nada do item da song está sendo usado para alterar a solicitação de forma alguma.