我正在尝试使用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);
});