我需要向我们的API发出请求,以检查我们数据库记录中的标志。我可以将此请求设置为“n”次。如果我找不到正确的值,我将返回错误。
我曾尝试使用JQuery属性async:false
使异步请求同步而不起作用(我已经看到它已被弃用)。
另一个选择是递归地发出一个AJAX请求,但是AJAX缓存了这个值。我使用cache:false
也没有效果。
我正在寻找其他替代方案(节点库,模式......)但直到现在还没有运气。
有人解决了类似的问题吗?
UPDATE 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"
});
}
}
答案 0 :(得分:2)
您可以通过向每个请求添加伪随机参数来阻止缓存。浏览器和您的服务器会相信,因为您的请求包含不同的查询数据,您可能会要求提供不同的信息,并且不会提供缓存的响应。
您应该只需更改
即可ajax.jsonRequest('get', 'check_pay', {transactionID: "123FOO"})
要:
ajax.jsonRequest('get', 'check_pay', {
transactionID: "123FOO",
timestamp: Date.now()
})