2

让我们先看看我的代码:

$.when(function(){
    //blah blah blah...
    $.post('submit.php', {name: 'John'}, function(){
        console.log('saved!');
    }, 'text');
    //blah blah blah...
})
.then( $('#data').show() );

这是什么意思?我认为这意味着当第一个函数完成它的工作(发布到submit.php和其他一些工作)时,显示#data. (我对吗?)

但是,当我运行它时,它首先显示#data然后记录saved!(意味着发布完成)

为什么?

4

2 回答 2

2

你根本不应该打电话.when()
$.post()已经返回一个 Defered 对象。
你可以直接调用.then()它。

于 2012-07-03T00:05:29.180 回答
0

你可以让它像那样工作

$.post('submit.php', {name: 'John'}, function(){
    console.log('saved!');
}, 'text').then( $('#data').show() );

或者,如果您想继续使用$.when

$.when(function() {
    return $.post('submit.php', {name: 'John'}, function(){
        console.log('saved!');
    }, 'text');
}).then( $('#data').show() );
于 2012-07-27T15:01:28.917 回答