【发布时间】:2019-06-21 15:21:08
【问题描述】:
我使用解析器并链接承诺,但我调用的服务也返回承诺,我不知道如何在链接中使用它
第二个函数的主体永远不会被调用
public resolve(route: ActivatedRouteSnapshot): Promise<boolean>
{
return this.translationsService.getTrads()
.then(function(response:Response)
{
this.coreService.trads=response.json(); <<<< it gets to forkInnerZoneWithAngularBehavior function and code stops
这就是我的服务功能的实现方式
getTrads() {
if (this.trads) {
return new Promise((resolve, reject) => {
resolve(this.trads);
});
} else {
return this.http.get(.....).toPromise();
}
}
我觉得我做错了,但老实说 rxjs 确实让事情变得复杂
谢谢
解决方案:我简化了代码,“this”未定义,所以我使用 =>
【问题讨论】:
-
如果你不回来,你就打破了链条。喜欢:
return resolve(this.translationsService.getTrads()); -
如何使用
public resolve(route)函数?对于您想要实现的目标,这看起来非常不必要的复杂。 -
我使用 resolve 并返回第二个“then”
-
你不需要将
getTrads包裹在一个promise 中——只需使用return this.translationsService.getTrads().then(...)。 -
将 getTrads() 设为 promise 函数,然后在公共解析函数中使用
then catch等待 then 中的数据并在 catch 块中获取错误