如何使用.queue()正确链接自定义回调函数?

时间:2011-03-06 08:36:33

标签: javascript jquery ajax queue

我正在试图弄清楚如何链接自定义函数:

我有这样的事情:

show_loader(0, function() {
    open_box($target_open, event.value, '.wide-col', function() {
        hide_loader(function() {
            scroll_to_content($target_open, function() {
            });
            $(this).dequeue();
        });
        $(this).dequeue();
    });
    $(this).dequeue();
});

这些函数的回调实现如下:

function show_loader(position, callback) {
    $ajaxSpinner.fadeIn();
    status = "loading"; //some non-jQuery stuff
    if (callback) $ajaxSpinner.queue( function() {callback()} );
}

你可以看到我正在尝试做的基本思路:在函数内的动画完成后执行我的函数。

我认为我的代码不对。顺序应该是:show loader,open box,hide loader,然后最后滚动到内容。相反,看起来这就是我测试它时实际发生的事情:show loader,hide loader,滚动到内容,然后打开框。

如何正确排列函数调用顺序?我是否在适当的背景下使用了keyowrd“this”?

1 个答案:

答案 0 :(得分:1)

  

你可以看到我正在尝试做的基本思路:在函数内的动画完成后执行我的函数。

如果你使用jQuery的标准动画函数,你应该可以直接将回调传递给它们。 E.g:

function show_loader(position, callback) {
    $ajaxSpinner.fadeIn(callback);
    status = "loading"; //some non-jQuery stuff
}

查看http://api.jquery.com并了解它们的工作原理。

<强>更新

Here is an example that produces the desired result using queue。我正在使用一个更新的表单,其中下一个要执行的函数作为参数传递给回调。 也许你对dequeue 做错了。 编辑:我尝试了你的代码,它运行正常。我猜您在其他功能中没有正确使用queue