在Ajax调用完成后运行一个函数

时间:2013-04-30 17:45:04

标签: javascript jquery ajax deferred

有些事情我不知道为什么会发生。我有这3个功能:

app.progress();
app.success();
app.normal();

这三个都改变了我的应用程序中的状态块。我在其中一个函数中有$.post,让我们说:

app.set : function() {
  ...
}

在我的set函数中,我想像这样更新状态块:

app.set : function() {
    app.progress();
    $.post('ajax.php', function(){
        // do stuffs
    }).done({function(){
        app.success();
        setTimeout(app.normal(), '2000');
    })
}

但不知怎的,我看不到app.success,它跳到app.normal,当我删除app.normal时,我可以看到app.success

为什么?

1 个答案:

答案 0 :(得分:6)

你正在调用app.normal,因为当你将一个括号添加到一个函数时会发生这种情况,改变这个:

setTimeout(app.normal(), '2000');

setTimeout(app.normal, 2000);

引用该函数而不是调用它。