1

很难在这个上获得正确的标题。

如果我使用 Javascript 图像对象来跟踪某些东西,http 请求是异步完成的(它不是阻塞调用),所以我一直担心如果我重新使用引用图像对象的变量,我可能会强制取消请求。这里有一些代码可以说明我的担忧。

var img = new Image();
img.src = URL1;  //hit server with request 1
img = new Image(); //re-use the img variable for the next new Image
img.src = URL2;  //and now request 2. Would this cancel request 1 ?

我可以(并且目前确实)通过拥有一组 Image 对象来解决这个潜在的问题,然后我会采用下一个可用的对象,然后在 10 处环绕。这样:

var imgs=[], index=0;
function send(url) {
    imgs[index] = new Image();
    imgs[index++].src = url;
    if(index>=10)index=0; //wraparound
}
send(URL1);
send(URL2);

我知道在第一个代码示例中重新使用 img 对象时,我实际上并没有对那个原始图像对象做任何事情,我只是将它孤立起来——将它的引用计数减少到零并将它打开以进行垃圾收集。

我是否可能会发现(在第一个示例中)第一个请求被取消/中止?或者它会一直完成,只是发现完成后没有人感兴趣?

4

1 回答 1

0

你正在做正确的方式。如果您想知道您的请求是否已被取消,请为您的 firefox 安装 Firebug,然后打开 net request 选项卡并观察

于 2012-05-15T08:57:22.623 回答