在javascript中从单独的线程传递/访问值
我正在尝试使用我在另一篇文章中找到/编辑的以下代码。 我想使用函数“IsValidImageUrl()”即时返回结果。由于此函数在单独的线程中运行,因此在获取值时遇到了问题,例如,如果使用“return True;”代替“isValid=True;”,则返回值总是“undefined”。所以我尝试使用全局变量“isValid”,但它似乎总是落后一步,这意味着我需要调用函数两次,才能得到第一次调用的结果 我到底错过了什么?或者你能推荐另一种我能做到的方法吗 谢谢大家!在javascript中从单独的线程传递/访问值,javascript,jquery,multithreading,Javascript,Jquery,Multithreading,我正在尝试使用我在另一篇文章中找到/编辑的以下代码。 我想使用函数“IsValidImageUrl()”即时返回结果。由于此函数在单独的线程中运行,因此在获取值时遇到了问题,例如,如果使用“return True;”代替“isValid=True;”,则返回值总是“undefined”。所以我尝试使用全局变量“isValid”,但它似乎总是落后一步,这意味着我需要调用函数两次,才能得到第一次调用的结果 我到底错过了什么?或者你能推荐另一种我能做到的方法吗 谢谢大家! <script>
<script>
var isValid;
function IsValidImageUrl(url) {
$("<img>", {
src: url,
error: function() { isValid=false; },
load: function() { isValid=true; }
});
}
IsValidImageUrl("https://www.google.com/logos/2012/hertz-2011-hp.gif");
alert(isValid);
IsValidImageUrl("http://google.com");
alert(isValid);
</script>
var是有效的;
函数IsValidImage url(url){
$("
问题是您必须等待映像加载或失败后才能使用状态。最好的方法是在映像加载或发生错误时,为IsValidImgUrl函数提供一个回调函数(或将成功和失败的回调函数分开运行)。在本例中,image元素也传递给回调函数,以便它们知道调用了哪个映像
函数IsValidImageUrl(url、okFunc、errFunc)
{
var image=document.createElement(“IMG”);
image.src=url;
image.onload=function(){okFunc(image)};
image.onerror=function(){errFunc(image)};
}
函数imageLoadSucces(图像)
{
警报(“已加载图像:“+image.src”);
}
函数imageLoadFail(图像)
{
警报(“图像加载错误:+image.src”);
}
IsValidImage URL(“https://www.google.com/logos/2012/hertz-2011-hp.gif,imageLoadSucces,imageLoadFail);
IsValidImage URL(“http://google.com“,ImageLoadSuccess,imageLoadFail);
m69,你为我指明了正确的方向。非常感谢!