Javascript 而http查询直到parentID值为';0';
我正在设置一个while循环来检查父ID是否存在。每次我运行此代码时,我的应用程序都会崩溃。首先,我要从JSON文档中设置parentID。之后,我运行一个对位置索引的HTTP请求。在这个索引中,我将为下一个http请求获取内容(城市、州、土地的名称)和下一个parentID,直到parentID为“0” 最后,我需要这个输出->欧洲(parentID=0)、德国(parentID=14)、柏林(parentID=34)Javascript 而http查询直到parentID值为';0';,javascript,typescript,Javascript,Typescript,我正在设置一个while循环来检查父ID是否存在。每次我运行此代码时,我的应用程序都会崩溃。首先,我要从JSON文档中设置parentID。之后,我运行一个对位置索引的HTTP请求。在这个索引中,我将为下一个http请求获取内容(城市、州、土地的名称)和下一个parentID,直到parentID为“0” 最后,我需要这个输出->欧洲(parentID=0)、德国(parentID=14)、柏林(parentID=34) 我做错了什么?你的做什么。。。而是一个无限循环。 循环是同步的,http调
我做错了什么?你的
做什么。。。而
是一个无限循环。
循环是同步的,http调用是异步的。因此浏览器反复运行循环,始终使用相同的parentID
你应该这样写:
const getParent = (parentID) => {
this.http.placeById(parentID).subscribe(analyse => {
this.place.push(analyse['_source']['content']);
let newParentID = analyse['_source']['parentID'];
if (newParentID !== '0') {
getParent(newParentID);
}
});
}
let firstParentID = res['_source']['parentID'];
getParent(firstParentID);
完美解
const getParent = (parentID) => {
this.http.placeById(parentID).subscribe(analyse => {
this.place.push(analyse['_source']['content']);
let newParentID = analyse['_source']['parentID'];
if (newParentID !== '0') {
getParent(newParentID);
}
});
}
let firstParentID = res['_source']['parentID'];
getParent(firstParentID);