你能告诉我怎样才能在这里归还 deleteInvite(inviteId):Observable<HttpResponse<Object>> {
this.getHttpHeader().then(headers => {
return this.http.post(this.apiURL + "/deleteInvite", inviteId, { observe: "response", headers: headers })
}).catch(err => {
console.error(err);
});
}
async getHttpHeader() {
const accessToken = await this.getJWTToken();
let headers = new HttpHeaders().set('Authorization', `Bearer ${accessToken}`);
return headers;
}
?我尝试了很多方法。但还没有成功。
[ts]一个声明类型既不是&#39;无效的函数。也没有任何&#39;必须 返回一个值。
async
答案 0 :(得分:1)
使用thisGetHeaders()
fromPromise
转换为Observable
import { fromPromise } from 'rxjs/observable/fromPromise';
deleteInvite(inviteId):Observable<HttpResponse<Object>> {
return fromPromise(this.getHttpHeader()).pipe(
switchMap(headers => {
return this.http.post(this.apiURL + "/deleteInvite", inviteId, { observe: "response", headers: headers })
}),
catchError(err => {
console.error(err);
})
);
}
答案 1 :(得分:0)
getHttpHeader()
返回Promise
。只需等待它打开它的价值。然后返回this.http.post
的结果,这是预期的Observable
。为此,请在await
块中使用try/catch
关键字:
async deleteInvite(inviteId) {
try {
const headers = await this.getHttpHeader();
return this.http.post(this.apiURL + "/deleteInvite", inviteId, { observe: "response", headers: headers });
}
catch (err) {
console.error(err);
}
}
然后在消费者方面做await deleteInvite(inviteId)
来处理返回的Promise。
然而,将Observable和Promise混合起来很复杂。所有Promise(或所有Observables)都可以更容易:“return await this.http.post().toPromise()
”。