UPDATE3和FINAL:求得感谢Evan和meder!
UPDATE2:我应该澄清,我需要调用函数updateFilters (a,b)
,而不是创建函数。该功能存在于其他地方抱歉混淆。
以下代码无法按预期工作 - udpateFilters(a,b)
循环结束前调用for
。将异步更改为false
可以解决问题,但这似乎不对。此外,无论ajax成功与否,都会调用 updateFilters()。
我做错了什么?
save (updateFilters(a,b));
function save (cb) {
$.ajax ({
url:'save.php',
data:somedata,
async:true,
success: function (response) {
for (var i in response) {}
if (typeof cb!='undefined') cb;
});
}
function updateFilters (a,b) {
//do some stuff here
}
解答: 因此,meder建议我更改参数。这是答案的2/3!
save (
(function (a,b) {
return function () {
return updateFilters(a,b);
}
})(a,b)
);
现在更改以下内容:
if (typeof cb!='undefined') cb (); //brackets are important!
很高兴去!
答案 0 :(得分:4)
您正在传递函数的调用,而不是稍后应该调用的函数。如果你想要后者,请这样做:
save (
(function(a,b){
return function() {
return updateFilters(a,b)
}
})(a,b)
);
答案 1 :(得分:1)
关于您的更新,您永远不会调用回调。这和做
一样x; // does nothing
您想要回拨电话:
cb(); // invoke the function