Angular 2+从服务中的函数返回值到其他服务中的函数调用

时间:2019-05-12 06:13:54

标签: angular typescript

我在其他服务中调用一个函数

this.response = this.groupingService.handleGroupingIntent(...);

在另一个服务的函数本身中,我在另一个服务中调用另一个函数:

handleGroupingIntent(){
this.tablePlanService.group(...).then(() => {return true;}).catch(() => {return false;})
}

此功能在第三项服务中如下所示:

return new Promise((resolve, reject) => {
      const onSuccess = () => resolve();
      const onError = (err: HttpErrorResponse) => {
        const errorHandler = this.httpErrorResponseHandler(
          `Serverfehler beim Gruppieren von Tisch ${tableToAdd.number}` +
          ` zu Tisch ${masterTable.number}.`);
        errorHandler(err);
        reject();
      };

      this.http.post(`/api/table-plan/groupings`, data)
        .subscribe(onSuccess, onError);
    });
  }

我想通过第二个函数中的then / catch子句将this.response变量设置为true或false,但是它返回undefined

我应该如何解决这个问题?

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

您还应该从Promise返回一个handleGroupingIntent()

尝试一下。

handleGroupingIntent(){
    return new Promise((resolve, reject) => {
        this.tablePlanService.group(...)
            .then(() => {

                resolve(true)
            }).catch(() => {

            reject(false)
        })
    });
}

调用handleGroupingIntent()函数,如下所示。

this.groupingService.handleGroupingIntent(...)
    .then((data) => {

        this.response = data;
    }).catch((data) => {

        this.response = data;
});

希望这会对您有所帮助。