angular - 在 Promise 中返回 Observable
问题描述
你能告诉我怎样才能回到Observable
这里吗?我尝试了很多方法。但还没有成功。
[ts] 声明类型既不是“void”也不是“any”的函数必须返回一个值。
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;
}
解决方案
FOR rxjs 版本:6.0.0 及以上
import { from } from 'rxjs';
deleteInvite(inviteId):Observable<HttpResponse<Object>> {
return from(this.getHttpHeader()).pipe(
switchMap(headers => {
return this.http.post(this.apiURL + "/deleteInvite", inviteId, { observe: "response", headers: headers })
}),
catchError(err => {
console.error(err);
})
);
}
对于旧版本的 rxjs:
使用转换thisGetHeaders()
为 ObservablefromPromise
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);
})
);
}
推荐阅读
- ios - 将数组传递给另一个视图控制器
- c - 使用 C 中的多线程进行长数素数检测
- typescript - 使用打字稿验证字符串中的第一个字母大小写
- r - R:从 SpatialGridDF 转换时,raster() 会更改像素大小
- javascript - 将加密浏览器添加到 Gatsby 项目
- python - 使用 cx_Freeze 创建 .msi 安装程序 -- 安装时显示消息
- python - 如何剥离 Python 列表中的元组
- git - .xlsx 文件中止 git restore 命令并生成 index.lock 文件
- javascript - 我们可以在对字符串数组进行排序时实现以下行为吗?
- node.js - 为什么要在复制 package.json 后复制 dot dot?