我到处寻找解决方案,但到目前为止还没找到任何东西(我可能使用了错误的关键字!如果这是重复的,请指出我将删除)
你们其中一位才华横溢的天才能否向我们解释为什么下面的内容无法发挥作用?我的意思是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
回调?
答案 0 :(得分:4)
这是因为setTimeout()
不会阻止代码的执行。
因此complete
回调会在没有您setTimeout()
号召唤的同时触发。
您必须将console.log('ended');
调用置于超时(也是)或在超时内调用完整的处理程序。 :)