如何在继续异步方法之前等待对象的承诺解决

时间:2018-04-30 15:58:20

标签: angular asynchronous jasmine

在使用Jasmine框架的Angular测试期​​间,是否有可能等待属于对象的属性?

private async hasID(items: Items[]): Promise<boolean> {
    for (const item of items) {
        try {
            this.info = (await item.promise).json();
        } catch (err) {
            continue;
        }
    }
    return false;
}
我的测试中的

this.connectorInfo正在返回undefined,因为我不确定如何等待此响应在继续之前返回。我理解等待async方法完成,但对象上的属性似乎不同。

我把这个对象嘲笑为:

item = {
    promise: Promise.resolve({
        json: () => {
            return {
                ...
            };
        }
    }
};

有什么想法吗?感谢

1 个答案:

答案 0 :(得分:0)

我不确定我是否正确理解了你的问题以及它与棱角分明或茉莉花有什么关系,但是这样的事情呢:

private async hasID(items: Items[]): Promise<boolean> {
  let promises = [];
  let info = [];
  for (const item of items) {
    let promise = item.promise().then((data) => {
      info.push(data.json());
      return data;
    })
    promises.push(promise);
  }
  return Promise.all(promises).then(() => {
  // here is some logic that verifies this.info contents
    return false;
  });
}