我需要向API请求检查DB记录中的标志。我可以使这个请求"n“的次数最多。如果找不到正确的值,我将返回一个错误。
我尝试过使用JQuery属性async:false来同步异步请求,而不会产生任何效果(而且我已经看到这是不推荐的)。
另一种选择是递归地发出AJAX请求,但是AJAX缓存值。我也使用过cache:false,没有任何效果。
我正在寻找其他替代方案(节点库、模式、.)但直到现在才有运气。
有人解决了类似的问题?
更新1:使用递归调用我的最后一段代码
function checkPay(initialResponse, attempts){
if (attempts == 50){
console.log("Something goes wrong after 50 attempts...");
console.log("Let's restart and try again");
} else {
ajax.jsonRequest('get', 'check_pay', {transactionID: "123FOO"}) //A simple wrapper for $.ajax
.done(function(responseStatus){
if (responseStatus.status == "PENDING"){
console.log("Still waiting...");
checkPay(initialResponse, attempts + 1);
} else if (responseStatus.status == "ACCEPTED"){
console.log("Yuhuu!!!");
} else if (responseStatus.status == "REJECTED") {
console.log("Ooops...");
} else {
console.log("Wat?");
}
}).fail(function(error){
console.log("ERROR", error);
return "REJECTED"
});
}}
发布于 2015-08-07 08:31:35
可以通过向每个请求添加伪随机参数来防止缓存。浏览器和服务器会相信,因为您的请求包含不同的查询数据,所以您可能会请求不同的信息,而不会提供缓存的响应。
你只需要改变一下
ajax.jsonRequest('get', 'check_pay', {transactionID: "123FOO"})至:
ajax.jsonRequest('get', 'check_pay', {
transactionID: "123FOO",
timestamp: Date.now()
})https://stackoverflow.com/questions/31872826
复制相似问题