推迟回调,直到setTimeout完成

时间:2013-02-08 10:21:30

标签: javascript jquery callback

我到处寻找解决方案,但到目前为止还没找到任何东西(我可能使用了错误的关键字!如果这是重复的,请指出我将删除)

你们其中一位才华横溢的天才能否向我们解释为什么下面的内容无法发挥作用?我的意思是complete回调是在setTimeout回调中success完成之前调用的,我不太明白为什么。

$.ajax({
    url: options.url,
    data: options.data,
    success: function(){
        setTimeout(function(){
            console.log('firing');
        },2000);
    },
    dataType: options.dataType,
    complete: function(){
        console.log('ended');   
    }
});

是因为setTimeout回调中success启动了新主题吗?

是否可以在不将回调函数传入success回调?

的情况下实现

1 个答案:

答案 0 :(得分:4)

这是因为setTimeout()不会阻止代码的执行。

因此complete回调会在没有您setTimeout()号召唤的同时触发。

您必须将console.log('ended');调用置于超时(也是)或在超时内调用完整的处理程序。 :)