1

我有以下情况

我需要加载由 3rd 方托管的几个外部图像,例如这样的 url;

http://externaldomain.com/img/a/b/someimage.jpg

但是加载 1 张图片可能需要 15 秒!(我知道很疯狂),所以我正在考虑使用 jQuery 异步加载这些图像。这是我卡住的地方,我尝试了以下两种方法:

var img = new Image();            
$(img).load(function () {                                
    containerForImg.removeClass('loading-image').append(this);
})

.attr('src', imgFullPath)   
.attr('alt', imgAltText); 

我认为上面的代码不会异步加载图像,因为请求在完成之前一直等待所有图像。

第二种方法是

我创建了一个通用处理程序 (.ASHX) 来使用WebRequestWebResponse类从 .NET 下载图像,并使用 jQuery 方法调用此处理程序$.ajax(),但是如果有很多图像,这会导致屏幕无响应。我可以确认对处理程序的请求是异步的,但是我很好奇处理程序内部的调用是否是异步的。

结论是,这两种方法都没有给我最好的结果。那么,异步加载外部图像的最佳方法是什么?我不仅限于使用 jQuery,纯粹的 ASP.NET 解决方案就可以了。

4

1 回答 1

0

我不确定 jquery 的 .load() 函数是否设计用于 Image() 对象。但是,您只需很少的工作就可以自己完成:

var img = new Image()
img.onError = function(){
    //error handling here
}
img.onLoad = function(){
    //success
    containerForImg.removeClass('loading-image').append($(img));
}
img.onAbort = function(){
    //user clicked stop
}
img.src = "http://example.com"   //loading begins NOW!
于 2010-12-07T09:46:56.627 回答