在执行其余操作之前等待功能完成

时间:2010-04-25 21:50:24

标签: javascript jquery

当用户刷新页面时,会调用defaultView(),这会加载一些UI元素。 $.address.change()应在defaultView()完成时执行,但这不会一直发生。 $.address.change()无法在success:回调中,因为应用程序会使用它来跟踪网址更改。

defaultView();

function defaultView() {
    $('#tout').fadeOut('normal', function() {
        $.ajax({
            url: "functions.php",
            type: "GET",
            data: "defaultview=true",
            async: false,
            success: function (response) {
                $('#tout').html(response).fadeIn('normal');
            }
        });
    });
}

$.address.change(function(hash) {
    hash = hash.value;
    getPage(hash);
});

我不知道如何让$.address.change()等待defaultView()完成。任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:3)

successcomplete回调中调用它。使用delay计时回调充其量是不可靠的。您甚至可能需要在fadeIn回调内的success函数的回调中对其进行调用。

不必在成功回调中定义,只是执行。两种情境仍然可以使用它。

答案 1 :(得分:2)

我也被告知,由于异步,你不能让javascript“等待” - 但是看到答案:D ......并且因为你正在使用jQuery,所以更好:

使用jQuery的绑定和触发器。我在How to get a variable returned across multiple functions - Javascript/jQuery

发布了类似问题的答案

答案 2 :(得分:0)

一种选择是通过css隐藏$ .address(我猜这是一个下拉列表),并在ajax方法的成功回调中显示它。