jquery.when ajax问题

时间:2012-07-03 00:03:47

标签: jquery jquery-deferred

让我们先看看我的代码:

$.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!(表示已完成)

为什么?

2 个答案:

答案 0 :(得分:2)

你根本不应该打电话给.when() $.post()已经返回了一个Deferred对象 您可以直接致电.then()

答案 1 :(得分:0)

你可以让它像那样工作

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

或者,如果您想继续使用 $。时

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