而http查询直到parentID值为'0'

时间:2019-12-01 22:43:05

标签: javascript typescript

我正在建立一个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');

我做错了什么?

1 个答案:

答案 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);