如何避免Javascript中的429状态代码错误-会话超时或超出速率限制

时间:2019-03-20 18:52:56

标签: javascript session status

我正在尝试使用Javascript通过DFS算法遍历一棵树,并且在遍历过程中需要调用服务器以获取树的节点。

类似这样的东西:       var id =“ 000000”;       var url =“ https://test.data.com/” + id;       var self = this;       fetch(url,(data)=> {                 var data = JSON.parse(data);                   if(Array.isArray(data.assets)){                         var promises = data.assets.map((n,i)=> {                             返回self.getNode(n);                         })                         Promise.all(promises)。然后(results => resolve(results))                   }             });

这是第一个回复的样子(https://test.data.com/000000“) 数据= {   id:“ 111”,   0级,   资产:[“ 12345”,“ 685783”,“ 685783”,“ 685783] }

现在,我正在尝试通过将这些id传递到上面的url来深入节点,就像在上面的例子中,我有4个id,我想通过使每个id逐一遍历调用URL并传递ID。

fetch(https://test.data.com/12345", (data)=>{
 //will give say this o/p
data = {
  id: "111",
  level:1,
  assets: ["434344"]
}
})

然后,我采用第1级提供的ID,并将其传递给URL,依此类推,直到我踏上第一步,然后我重新开始搜索具有level:0的资产中的第二项并继续遍历。 我的问题是,每个我想要进入下一个nde级别(即要获取其子级)的URL都需要调用该URL。我遇到了status code 429 too many requests错误,并且试图通过setTimeout处理该错误。但是以下内容对我不起作用。另外,我不确定这是否是解决此类状态错误的正确方法。知道如何解决这个问题吗?

fetch(url,(data)=>{
                var data = JSON.parse(data);
                  if(Array.isArray(data.assets)){
setTimeout(function(){
                        var promises = data.assets.map((n,i)=>{
                            return self.getNode(n);
                        })
                        Promise.all(promises).then(results=>resolve(results))
                  }
},300000);
            });

0 个答案:

没有答案