很难在这个上获得正确的标题。
如果我使用 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 对象时,我实际上并没有对那个原始图像对象做任何事情,我只是将它孤立起来——将它的引用计数减少到零并将它打开以进行垃圾收集。
我是否可能会发现(在第一个示例中)第一个请求被取消/中止?或者它会一直完成,只是发现完成后没有人感兴趣?