Angular TypeScript получить элемент из обещания после вызова - PullRequest
0 голосов
/ 27 марта 2020

Я пытаюсь решить возникшую проблему, но не знаю, как это сделать. У меня есть сервис с методом для получения страниц из Contentful , он выглядит так:

async getPages(): Promise<Page[]> {
  const response = await this.cdaClient.getEntries({
    content_type: "page",
    include: 3
  });
  return response.items.map(this.createPage);
}

, который я вызываю в моем app.component :

async ngOnInit() {
  this.pages = await this.contentfulService.getPages();
}

То, что я хотел бы сделать, - это когда оно вызывается, сохранить его на contentfulService, чтобы я мог запросить его позже. Примерно так:

private pages: Page[];

getPage(slug: string) {
  return this.pages.find(page => page.slug === slug)
}

async getPages(): Promise<void> {
  const response = await this.cdaClient.getEntries({
    content_type: "page",
    include: 3
  });
  this.pages = response.items.map(this.createPage);
}

Но проблема в том, что я хотел бы, чтобы getPage также был обещанием, чтобы я мог вызывать его из своего компонента маршрута:

page: any;

constructor(
  private router: Router,
  private contentfulService: ContentfulService
) {}

async ngOnInit() {
  this.page = await this.contentfulService.getPage(this.router.url.split("#")[0]);
}

Кто-нибудь знает, как я могу это сделать?

1 Ответ

0 голосов
/ 27 марта 2020

Хотите знать, почему вы хотите Promise, но ответ таков:

getPage(slug: string) {
  return Promise.resolve(this.pages.find(page => page.slug === slug));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...