Typescript - 从ForEach()内重复调用函数会导致未定义

时间:2017-07-03 18:59:51

标签: javascript angular typescript foreach

我试图遍历由对象组成的对象,其中每个对象的一个​​属性用于进行服务调用。

当我尝试执行此操作时,这可以正常工作,我可以控制注销从成功的服务调用返回的数据,但是当我尝试使用forEach()为父对象中的每个对象重复此过程时得到错误"无法读取属性' host'未定义"。

有人能解释我错过了什么吗?

这是我的代码现在的样子:

getItemParametersCallback(data){
    ...
    // Parent Object made of Objects 
    // data is returned by a service call 
    this.parentObject = data.json();

    // Iterate through the objects of the parentObject
    const parentObjectItems = Object.keys(this.parentObject);

    parentObjectItems.forEach( key => {
        // I can add an if to limit this to being called once,
        // like if(key === 'apple')... and it works fine
        this.ItemService.getItem(this.getItemCallback.bind(this), 
            this.parentObject[key]);
    });
}

// Console log out the data returned 
getItemCallback(data){
    console.log(data);
}

1 个答案:

答案 0 :(得分:1)

从你的代码:

this.parentObject = data.json();

// Iterate through the objects of the parentObject
const parentObjectItems = Object.keys(this.parentObject);

data.json / .json方法返回承诺。所以Object.keys(this.parentObject)是错误的。

解决方案

使用.thenasync/await解开续集。

更多