如何等到.done()完成后再继续

时间:2014-03-04 14:29:32

标签: javascript jquery

我想在完成$(".foo").fadeIn("slow");之后的所有内容后执行.done()

现在每当调用fadeIn时,我仍然可以看到文本是如何被实时更改的,因为jQuery不会等到它完成之后。

我将如何做到这一点?

$(".notice").fadeOut("slow", function() {
    $.ajax({
        url: "http://graph.facebook.com/name",
        cache: false,
        dataType: "JSON"
    })
    .done(function(data) {
        $(".foo .bar").text(data.name);
    });
    $(".foo").fadeIn("slow"); //
});

3 个答案:

答案 0 :(得分:2)

将代码放在jQuery.done方法

的回调中
$(".notice").fadeOut("slow", function() {
    $.ajax({
        url: "http://graph.facebook.com/name",
        cache: false,
        dataType: "JSON"
    })
    .done(function(data) {
        $(".foo .bar").text(data.name);

        $(".foo").fadeIn("slow"); //
    });

});

答案 1 :(得分:0)

将其移动到你的ajax-done函数中:

$(".notice").fadeOut("slow", function() {
    $.ajax({
        url: "http://graph.facebook.com/name",
        cache: false,
        dataType: "JSON"
    })
    .done(function(data) {
        $(".foo .bar").text(data.name);
        $(".foo").fadeIn("slow"); //move it here and it will be called if your ajax request is ready
        callMethod(); //alternative you can call a mehtod
    });
});

function callMethod() {
    $(".foo").fadeIn("slow");
}

答案 2 :(得分:0)

您可以使用chain of done

$.ajax({
    url: "http://graph.facebook.com/name",
    cache: false,
    dataType: "JSON"
}).done(function(data) {
    $(".foo .bar").text(data.name);
}).done(function() {
   $(".foo").fadeIn("slow"); 
});

DEMO.