首页 > 解决方案 > Angular 2 - 承诺链 - 承诺不会被调用

问题描述

我使用解析器并链接承诺,但我调用的服务也返回承诺,我不知道如何在链接中使用它

第二个函数的主体永远不会被调用

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”未定义,所以我使用 =>

标签: angularresolver

解决方案


您的getTrads函数返回一个解析为数组或 HTTP 响应的承诺。如果您希望它解析为所需的数组,则必须response.json()在函数内部执行getTrads

getTrads() {
    if (this.trads) {
        return Promise.resolve(this.trads);
    } else {
        return this.http.get(...).toPromise()
            .then(response => response.json());
    }
}

推荐阅读