Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 延迟js函数的执行_Javascript - Fatal编程技术网

Javascript 延迟js函数的执行

Javascript 延迟js函数的执行,javascript,Javascript,我编写了一个函数,在框的中心显示一个图像。但是,当加载图像时,它会附带一些默认样式,包括位置信息。调用中心图像函数基本上与图像加载同时进行,但在图像完全加载之前完成。这会导致“中心图像”功能的副作用被图像的默认样式覆盖,因此图像不会放置在框的中心 我想知道我是否可以延迟执行中心图像函数来解决这个问题。有人告诉我如何延迟js函数的执行吗?非常感谢。您可以使用延迟函数的执行,但我认为这不是您想要的,因为您可以在加载图像时监听 if(image.complete) { // already f

我编写了一个函数,在框的中心显示一个图像。但是,当加载图像时,它会附带一些默认样式,包括位置信息。调用中心图像函数基本上与图像加载同时进行,但在图像完全加载之前完成。这会导致“中心图像”功能的副作用被图像的默认样式覆盖,因此图像不会放置在框的中心


我想知道我是否可以延迟执行中心图像函数来解决这个问题。有人告诉我如何延迟js函数的执行吗?非常感谢。

您可以使用延迟函数的执行,但我认为这不是您想要的,因为您可以在加载图像时监听

if(image.complete) {
    // already finished loading
}else{
    image.onload=function() {
        // loaded
    };
}
img

<img src="<>" onload="centerImage()" />
“onload=“centerImage()”/>
如果您使用的是javascript库,则可以使用以下截取的代码在加载所有图像后运行代码:

$(window).load(function(){  
  //initialize after images are loaded  
});

而不是“窗口”(页面上的所有图像都已加载),您也可以直接选择一个图像。

我不知道,但是在设置onload时是否会有竞争条件?也就是说,图像在分配image.onload之前就完成了加载。这会把事情搞砸吗?如果是这样,是否还会有另一个图像。在分配onload函数后完成检查?@trinithis:我怀疑这可能会发生.JavaScript是单线程的,并且此代码是同步的,因此我认为在完成此代码之前不会发生任何其他事情。如果在运行此代码时图像完成加载,则事件将在此代码完成执行后发生。只是当JS是单线程时,页面加载程序可能不会共享同一线程。@this:不过,它必须等待代码完成执行才能触发
load
事件,而且我认为在脚本空闲之前,它也不会更新
complete