javascript - Ajax 调用完成后运行函数

标签 javascript jquery ajax deferred

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

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

这三个都更改了我的应用程序中的状态 block 。我的其他函数之一中有这个 $.post ,比方说:

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

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

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

这是为什么?

最佳答案

您立即调用 app.normal,因为这就是您将括号添加到函数时发生的情况,请更改此:

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

setTimeout(app.normal, 2000);

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

关于javascript - Ajax 调用完成后运行函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16305914/

相关文章:

javascript - 使用javascript在本地机器上获取信息后如何将数据发送回apache服务器?

javascript - 如何在django中使用javascript动态更改花括号中的div标签的类名

jquery - 如何将 anchor ID属性与其他id Jquery进行比较?

javascript - jQuery 函数在不应该运行的时候运行

javascript - Jquery ajax promise 返回未定义

jquery - 在 jquery 移动中添加数据后,css 和 min js 没有得到应用

javascript - Slick Slider fade true 不适用于垂直 slider

javascript - 回调函数自动滚动失败

javascript - 如何使用JQUERY使用Mouseover/TouchStart/Mouseend/touchend创建圆形动画图像?

javascript - 对象 #<XMLHttpRequest> 没有方法 'done'