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



在使用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 {
                ...
            };
        }
    }
};

有什么想法吗?谢谢

我不确定我是否正确理解了您的问题以及它与 Angular 或 Jasmine 的关系,但是类似的事情呢:

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;
  });
}

最新更新