gpt4 book ai didi

angular - 在 Angular 2+ 中一个接一个地执行解析器

转载 作者:太空狗 更新时间:2023-10-29 17:08:40 25 4
gpt4 key购买 nike

给定以下路线:

path: '',
component: MyComponent,
resolve: {
foo: FooResolver,
bar: BarResolver
}

有什么方法可以告诉 Angular 执行第一个解析器 FooResolver,并且只在第一个解析器完成后才执行第二个解析器 BarResolver

最佳答案

解析器是并行解析的。如果 FooBar 应该被串联解析,它们应该是一个单独的 FooBar 解析器。如果它们应该在其他路由中自己使用,FooBar 可以包装 FooBar 解析器:

class FooBarResolver implements Resolve<{ foo: any, bar: any }> {
constructor(
protected fooResolver: FooResolver,
protected barResolver: BarResolver
) {}

async resolve(route): Promise<{ foo: any, bar: any }> {
const foo = await this.fooResolver.resolve(route);
const bar = await this.barResolver.resolve(route);

return { foo, bar };
}
}

FooBar 应该知道它是从 FooBar 返回的 promise 还是 observable,以便解析他们正确。否则应该添加额外的安全设备,比如 await Observable.from(this.fooResolver.resolve(route)).toPromise()

FooBarFooBar 不应出现在同一路由中,因为这会导致重复解析。

关于angular - 在 Angular 2+ 中一个接一个地执行解析器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46792626/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com