【发布时间】:2020-05-21 13:45:34
【问题描述】:
我被投入到一个我对 javascript/typescript/angular 几乎没有经验的项目中,所以请原谅我的无知。当用户登录时,我有一个添加用户会话的 post 方法 api 调用,并且在成功发布时它返回 sessionId,它是一个字符串。我需要知道如何检索和存储该字符串以供以后在我的应用程序中使用,该字符串将用作几个不同 api 调用的参数。这是我当前的服务设置:
import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { catchError, retry } from 'rxjs/operators';
import { ConfigService } from './../config/config.service';
import { UserSession } from './user-session.interface';
import { ApiServiceBase } from '../shared/api-service-base'
@Injectable({
providedIn: 'root'
})
export class UserSessionService extends ApiServiceBase {
public userSession: UserSession;
private apiRoute: string = 'user-session';
constructor(http: HttpClient, configService: ConfigService) {
super(http, configService);
}
public async AddUserSession(userName: string): Promise<string> {
this.appSettings = (await this.configService.loadConfig().toPromise());
this.userSession = { userName: userName, application: this.application};
return this.http.post<string>(this.appSettings.apiSetting.apiAddress + this.apiRoute, this.userSession)
.pipe(
retry(1),
catchError(this.handleError)
)
.toPromise()
}
}
如何检索和存储返回的字符串?
【问题讨论】:
-
您可以使用component interaction via a service 的示例将字符串存储在可以订阅的主题或行为主题上。如果您继续遇到问题,也许可以从那里开始并更新您的问题。
-
就 Subject 与 BehaviorSubject 而言,当消费者订阅 BehaviorSubject 时,它可以发出最后一个发出的值。查看这个关于获取价值的问题:stackoverflow.com/questions/37089977/…。此外,您不需要使用 Promise,您可以使用 switchMap 或 mergeMap 等运算符来“链接”异步请求。
标签: javascript angular typescript service