jQuery fadeIn(),animation()函数是非阻塞的吗?

时间:2011-07-30 00:57:24

标签: javascript ajax jquery nonblocking

我有一个页面可以在$('document').ready()中发出几个ajax查询。我希望在收到第一个ajax调用后使用fadeIn()animation()显示一些信息几秒钟。

动画播放期间是否会阻止以下js / ajax调用?或者我应该使用setTimeout来延迟动画一秒钟,以便可以异步启动ajax调用吗?

修改

我的代码看起来像这样。其他人的ajax呼叫会被阻止5秒钟吗?

$.ajax({..., success: function(result) {
    $('#msg').html(result.xxx);
    $('#msg').fadeIn(5000);

    // Other ajax calls
    $.ajax(....)
    ....
}

2 个答案:

答案 0 :(得分:4)

是的,它们是无阻塞的。动画方法只是启动动画并立即返回。

更新用户界面的任何代码都必须是非阻塞的,因为在任何函数运行时都不会更新用户界面。

答案 1 :(得分:1)

所有 javascript都可以被视为阻止,因为它完全是单线程的。

你做不了类似的事情:

fadeIn
sleep(5 seconds)
fadeOut

不会导致传入的ajax响应排队,直到fadeOut返回。使用setTimeout可能是最好的事情。

编辑:正如@Guffa指出的那样,对fadeInfadeOut的实际调用本身并不会阻止调用。你可能想要的是:

fadeIn(time, function() {
    setTimeout("fadeOut()", 5000);
});

或者说是这样的话。