0

我有一组函数要按顺序运行,但第一个函数有一个异步子函数。我希望第二个最高级别的函数仅在异步函数完成后运行。知道我该怎么做吗?

档案一:

one();
two(); // I don't want this to run until after one()'s $.ajax success callback

function one() {
    doSomethingElse();
    $.ajax(url, {data: data}, function(){
        // do two();
    });
}
4

3 回答 3

1

更改您的函数以返回 AJAX 对象:

function one() {
    doSomethingElse();

    return $.ajax({
        url: url,
        data: data
    });
}

现在你做:

one().done(function() {
    two();
});

这比two()直接放入回调要干净一些。

于 2013-05-15T19:39:40.007 回答
0

Promise 是您的最佳选择

jQuery 延迟和承诺 - .then() 与 .done()

于 2013-05-15T19:38:30.407 回答
0
function one() {
    doSomethingElse();
    $.ajax(url, {data: data}, function(){
        // do two();
        two();
    });
}

function two(){
alert("here");
}
于 2013-05-15T19:40:42.977 回答