2013-03-20 5 views
7

Sto cercando di capire la funzione when e gli oggetti posticipati in jQuery.Rimandato con jQuery - when() con getJSON() callbacks

$.when($.getJSON('/echo/json', function() { 
    console.log('sucess'); 
}, function() { 
    console.log('error'); 
})).then(console.log('get JSON ready!')); 

Questo esempio restituisce:

get JSON ready! 
sucess 

... ma voglio ottenere che gli incendi successo di callback prima:

sucess 
get JSON ready! 

Come posso fare questo?

http://jsfiddle.net/lukaszr/rBFmL/

risposta

10

hai dimenticato la funzione wrapper - il codice chiama console.log immediatamente invece di passare una funzione di callback:

.then(console.log('get JSON ready!')); 

dovrebbe essere:

.then(function() { 
    console.log('get JSON ready!'); 
}); 

Fiddle

+3

+1 ahhh, il vecchio problema del puntatore di funzione. – Liam

+0

+1 buona osservazione. – Adil

+1

errore da principiante, grazie! –