【发布时间】:2015-11-15 12:34:09
【问题描述】:
我希望使用 JQuery 对一系列 AJAX 请求进行排队。 假设有一个函数 updateImage() 根据用户单击的按钮向服务器查询 URL,并返回指向图像的链接。 服务端记录imageId,浏览器显示图片。本应用要求成功回调函数按照发送顺序触发(以便浏览器显示与用户点击顺序对应的图片)。
举例说明:
//User a number of buttons in quick succession
$(".button").click(function(){
var imageId = $(this).attr("id");
updateImage(imageId);
});
//Ajax success callbacks need to run in the order of the clicks
function updateImage(imageId) {
$.ajax({
url: /someurl,
data: imageId,
success: successFunction //this function will update the DOM
});
}
我考虑过 $.ajaxStop,但问题是我不想因为这个 updateImage 函数而暂停或排队其他 AJAX 函数。我还查看了 $.when,但这允许您链接已知数量的 ajax 调用执行,但我不确定用户会点击多少次 - 我不确定这是否适用于此。
【问题讨论】:
-
你搞定OP了吗?
-
@r3wt 我还在努力。我确实看过您的建议 - 理想情况下,我希望它在没有 setTimeout 的情况下工作,以便迭代重复而无需等待,但我没有在问题中提到这一点。
-
你为什么接受这个答案?另外,我的答案仅依赖于 setTimeout 来充当速率限制器,即(快速单击 5 个按钮只会在最后一次触发该功能。
-
@r3wt 我将其标记为正确,因为除了 setTimeOut 不符合我的特定需求(我在问题中没有明确说明)之外,对于其他任何人来说,它工作,并且干净简单。谢谢!
标签: javascript jquery ajax