7

我试图理解whenjQuery 中的函数和延迟对象。

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

此示例返回:

get JSON ready!
sucess

...但我想实现成功回调首先触发:

sucess
get JSON ready!

我怎样才能做到这一点?

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

4

2 回答 2

10

您忘记了函数包装器 - 您的代码console.log立即调用而不是传递回调函数:

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

应该:

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

小提琴

于 2013-03-20T11:52:35.363 回答
1

尝试使用 .done(...) 而不是 .then(...)。jQuery 文档中有一些示例。

http://api.jquery.com/jQuery.when/

于 2013-03-20T11:56:37.147 回答