Как дождаться выполнения обещания на объекте, прежде чем продолжить асинхронный метод - PullRequest
0 голосов
/ 30 апреля 2018

Возможно ли во время углового тестирования с использованием среды Jasmine ожидать свойства, являющегося частью объекта?

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 голосов
/ 30 апреля 2018

Я не уверен, правильно ли я понял вашу проблему и как она относится к ангулярному или жасминовому, но как насчет чего-то подобного:

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;
  });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...