2013-03-20 41 views
7

Tôi đang cố gắng hiểu các đối tượng chức năng và đối tượng trì hoãn trong jQuery là when.Trì hoãn với jQuery - khi() với hàm getJSON() gọi lại

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

Ví dụ này trả về:

get JSON ready! 
sucess 

... nhưng tôi muốn đạt được điều đó cháy thành công callback đầu tiên:

sucess 
get JSON ready! 

Làm thế nào tôi có thể làm điều đó?

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

Trả lời

10

Bạn quên chức năng wrapper - mã của bạn gọi console.log ngay lập tức thay vì đi qua một hàm callback:

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

nên là:

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

Fiddle

+3

+1 ahhh, vấn đề con trỏ hàm cũ. – Liam

+0

+1 quan sát tốt. – Adil

+1

lỗi tân binh, cảm ơn! –

Các vấn đề liên quan