打字稿承诺:如何在承诺中使用某些数据

时间:2019-08-16 07:56:26

标签: typescript promise

我想从组件中使用的所需数据是

  .subscribe(setting => {
        this.retrievedSettings = setting;
        return this.retrievedSettings;
      });

但是,返回的数据是一个Observable,我无法(或不知道如何)获得所需的对象数据。

我尝试保存

this.retrievedSettings = setting;

到另一个可观察到的东西,但是没有用;

服务

retrievedSettings : SettingsModel;

async getUserSettings(userID : string) {
 const firebaseToken = await 
 this.angularFireAuth.auth.currentUser.getIdToken(true);
let searchParams = new HttpParams();
 searchParams = searchParams.set('auth', firebaseToken);
 searchParams = searchParams.append('id', userID);

 return this.http.get<{ [userID: string]: SettingsModel }>(API.DB_URL + API.userSettings,
  {
    params: searchParams
  })
  .pipe(
    map(responseData => {
      let settings : SettingsModel;
      for (const key in responseData) {
        if (responseData.hasOwnProperty(key)) {
          if(responseData[key].id === userID) {
            settings = responseData[key];
          }
        }
      }
    return settings;
    }),

    catchError(errorResponse => {
    return throwError(errorResponse);
    })
    )
      .subscribe(setting => {
        this.retrievedSettings = setting;
        return this.retrievedSettings;
      });

}

调用该方法的组件

  getUserSettings() {  
   const userID = this.authenticationService.getUserId();
   this.userSettings = this.dbService.getUserSettings(userID)
   .then(responseData => {
  });
}

所需结果:要接收

的组件
this.retrievedSettings = setting;

0 个答案:

没有答案