首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >递归异步请求

递归异步请求
EN

Stack Overflow用户
提问于 2015-08-07 08:16:27
回答 1查看 86关注 0票数 0

我需要向API请求检查DB记录中的标志。我可以使这个请求"n“的次数最多。如果找不到正确的值,我将返回一个错误。

我尝试过使用JQuery属性async:false来同步异步请求,而不会产生任何效果(而且我已经看到这是不推荐的)。

另一种选择是递归地发出AJAX请求,但是AJAX缓存值。我也使用过cache:false,没有任何效果。

我正在寻找其他替代方案(节点库、模式、.)但直到现在才有运气。

有人解决了类似的问题?

更新1:使用递归调用我的最后一段代码

代码语言:javascript
复制
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"
        });
}

}

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-07 08:31:35

可以通过向每个请求添加伪随机参数来防止缓存。浏览器和服务器会相信,因为您的请求包含不同的查询数据,所以您可能会请求不同的信息,而不会提供缓存的响应。

你只需要改变一下

代码语言:javascript
复制
ajax.jsonRequest('get', 'check_pay', {transactionID: "123FOO"})

至:

代码语言:javascript
复制
ajax.jsonRequest('get', 'check_pay', {
  transactionID: "123FOO",
  timestamp: Date.now()
})
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31872826

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档