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

Are jQuery fadeIn(), animation() functions non-blocking?

本文关键字:是非 animation fadeIn jQuery 函数      更新时间:2023-09-26

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

在动画播放期间,下面的js/ajax调用会被阻塞吗?或者我应该使用setTimeout延迟动画一秒钟,以便ajax调用可以异步启动?

编辑:

我的代码看起来像这样。其他ajax调用会被阻塞5秒吗?

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

是的,它们是非阻塞的。动画方法只是初始化动画并立即返回。

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

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

你不能这样做:

fadeIn
sleep(5 seconds)
fadeOut

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

编辑:正如@Guffa指出的那样,对fadeInfadeOut的实际调用本身并没有阻塞调用。您可能需要这样的内容:

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