我有下面的代码来调用我的应用程序中的api服务。问题是,当我调用apiPost()函数时,this.apiToken值是空的。这是因为当我调用apiPost()时,构造函数还没有初始化,apiToken值还没有赋值。
this.storageService.get(constant.storage_key.api_token).then((data) => {
this.apiToken = data;
//Is it possible to return Observable inside here?
});如何等待获取到apiToken后再调用this.httpAng.post()
export class MyApiService {
apiToken = "";
constructor(
private httpAng: HttpClient,
private storageService: StorageService,
) {
this.storageService.get(constant.storage_key.api_token).then((data) => {
this.apiToken = data;
});
}
apiPost(aUrl, aParams): Observable<any> {
let httpOptions: any = {
headers: new HttpHeaders({
'Content-Type': 'application/json',
'Authorization': 'Bearer ' + this.apiToken,
}),
}
return new Observable((observer) => {
// Post
this.httpAng.post(aUrl, aParams, httpOptions).subscribe(
async (data) => {
switch (data['status']) {
case 0:
observer.next(data);
break;
default:
this.alert.alertMessage(
data['message']
, () => {
observer.error(data)
}
)
observer.error(data);
}
},
async (error) => {
console.log(error)
observer.error(error);
}
);
});
}
}发布于 2021-06-11 16:03:09
Angular observable return undefined results
根据上面的帖子更改了我的代码,并使用了来自rxjs和switchMap的from。
https://stackoverflow.com/questions/67915436
复制相似问题