我正在建立一个while循环,以检查是否存在父ID。每次我运行此代码时,我的应用程序都会崩溃。首先,我要从JSON文档中设置一个parentID。之后,我对位置索引运行一个HTTP请求。在此索引中,我获取下一个http请求的内容(城市,州,土地的名称)和下一个parentID,直到parentID为“ 0”为止。
最后,我需要此输出->欧洲(parentID = 0),德国(parentID = 14),柏林(parentID = 34)。
let parentID = res['_source']['parentID'];
do {
this.http.placeById(parentID).subscribe(analyse => {
this.getNewParentID = analyse['_source']['parentID'];
this.place.push(res['_source']['content']);
parentID = this.getNewParentID;
});
}
while (this.getNewParentID !== '0');
我做错了什么?
答案 0 :(得分:1)
您的do ... while
是一个无限循环。
循环是同步的,而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);