2013-03-20 14 views
7

Ich versuche zu verstehen when Funktion und verzögerte Objekte in jQuery.Zurückgestellt mit jQuery - when() mit getJSON() Callbacks

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

In diesem Beispiel:

get JSON ready! 
sucess 

... aber ich will Feuer, dass der Erfolg Rückruf zuerst erreichen:

sucess 
get JSON ready! 

Wie kann ich das tun?

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

Antwort

10

Sie haben vergessen, die Funktion Wrapper - Code ruft console.log sofort stattdessen eine Callback-Funktion übergeben:

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

werden sollten:

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

Fiddle

+3

+1 ahhh, das alte Funktionszeiger Problem. – Liam

+0

+1 gute Beobachtung. – Adil

+1

Anfänger Fehler, danke! –