Angular TypeScript在调用后从promise获取项



我正在尝试解决一个问题,但不知道如何解决。我有一个服务,它有一个从Contentful获取页面的方法,看起来像这样:

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

我在应用程序组件中调用的:

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是一个promise,这样我就可以从我的路由组件调用它:

page: any;
constructor(
private router: Router,
private contentfulService: ContentfulService
) {}
async ngOnInit() {
this.page = await this.contentfulService.getPage(this.router.url.split("#")[0]);
}

有人知道我该怎么做吗?

想知道为什么要Promise,但答案是:

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

最新更新