我有2个功能。
function f1() {
$.ajax(..., success: function(response) {
// some code executed whenever request is completed.
}
}
function f2() {
// my code
}
我需要一个接一个地调用这些函数。
f1() // waiting until ajax request in the function is complete.
f2()
我尝试了$.when().then()
,但它似乎无效。
答案 0 :(得分:2)
$.ajax
调用返回$.Deferred
的实例,该实例用于跟踪调用的进度 - 这是您需要从f1
函数返回的内容。然后,您可以使用.then()
,.done()
等
编辑以回应评论
如果您想在f1
内以及外部调用回调,则可以返回.pipe
方法的结果。
function f1() {
return $.ajax(/*...*/).pipe(function() {
//local 'done' handler
});
}
function f2(resultFromF1Handler) {
//...
}
f1().done(f2);
答案 1 :(得分:1)
function f1(onsuccess)
{
$.ajax(
{
success: function(r)
{
// some code
onsuccess(r);
}
});
}
function f2()
{
// my code
}
f1(f2);
答案 2 :(得分:0)
我建议在匿名函数中调用f2(),该函数作为f1()的成功执行。
这样做有问题吗?