javascript同步执行

javascript同步执行,javascript,jquery,Javascript,Jquery,我是javascript新手,正在尝试使用滑块。我的问题类似于下面的问题 . 如果流是同步的,显示是否应该延迟到源完全加载,而不是显示旧图像 $('.container').fadeOut(100, function(){ console.log("before"); $('.container > img').attr('src', 'image src'); $('.container').show(); console.log("after")

我是javascript新手,正在尝试使用滑块。我的问题类似于下面的问题 . 如果流是同步的,显示是否应该延迟到源完全加载,而不是显示旧图像

$('.container').fadeOut(100, function(){
     console.log("before");
     $('.container > img').attr('src', 'image src');
     $('.container').show();
     console.log("after");
 });

在加载新映像之前,我可以在控制台中看到这两个日志。。请任何人解释一下……请原谅,如果这个问题很幼稚,我正试图抓住这个概念

使用.load事件侦听器,该侦听器将在加载映像时触发

$('.container > img').attr('src', 'image src').load(function(){
  $('.container').show();
});

调用
$('.container>img').attr('src','image src')的那一刻,向服务器发出加载映像的请求。加载图像需要时间,因此延迟


但是如果你仔细观察,这条线是完美的。在加载图像之前看到控制台条目的原因是加载图像需要时间。javascript是同步的,但问题是设置src属性与显示图像不同。一旦设置了src,就可以调度浏览器开始加载图像,然后继续执行脚本。如果希望在加载映像后执行代码,则必须将调用附加到映像的onload事件

在jQuery中,使用load函数:

$('.container > img').attr('src', 'image src').load(function(){
   // Stuff to do after the image has been loaded
});

它不是同步的。你的意思是浏览器加载图像是并行的,或者独立于@Marcus right建议的脚本执行,但是请确保在设置加载事件为src之前绑定到加载事件。@user1776573 IE yes,Ie7特别是,不确定。基本上,IE是同步执行加载事件的,如果缓存了映像,则会导致加载事件在绑定到加载事件之前发生。但是,请确保在设置加载事件的src之前绑定到加载事件。