1

我正在做一个画廊,它具有在照片之间导航的功能,下一张和上一张。

下一个和上一个切换大量异步 ajax 调用,以便可以在照片之间快速导航。

现在这是我的问题,假设我在照片#1,然后我执行:下一个,上一个,下一个,上一个。

由于 ajax 调用是异步的,因此为照片 2 检索的信息与照片 1 的信息混合结束,依此类推。

所以我需要在下一个和上一个中止现有的 ajax 调用,然后进行 ajax 调用。

我尝试了以下方法:

var xhr=false;

function(){

if(xhr){   
xhr.abort();
}

xhr=$.ajax({

});

}

这不会这样做,似乎一些请求在我的代码中的下一个和上一个之间快速进入时不会中止。

4

1 回答 1

2

ajax() 函数返回一个 promise,因此您可以使用 done() 来触发下一个 ajax 调用。如果之前的 ajax 调用失败,done() 将不会被调用。

参考:http ://api.jquery.com/category/deferred-object/

于 2012-09-20T17:43:35.757 回答