如何解决RxJs 轮询作业 - 链接是否正确?
我无法使其正常工作,如果有人能指出我正在尝试的问题和问题,我将不胜感激。我不确定问题是与 observables 的链接还是其他什么有关。
说明:
问题: 我看到下面的解决方案继续发布文件而不是发布一次,然后任意地要么逃脱要么得到结果。不用说我做错了什么。
尝试的解决方案(此处为示意图,因此请忽略语法等):
this.postData(inputFormData).pipe(
map(res => {
console.log(res.message);
return res.message
}),catchError(
err => {
console.log(err.message);
this.errorSubject.next(err.message);
return throwError(err.message);
}
),delay(5000),concatMap((id) => this.pollData(id))
)
和post方法实现很简单
postData(dataForm: any){
let headers = this.headers;
headers.set('Content-Type','multipart/form-data');
return this.httpClient.post<MessageInterface>(this.endPoint,dataForm,{headers: headers})
}
pollData(id: string){
return timer(0,5000)
.pipe(
switchMap( () => {
console.log(id);
return this.checkStatus(id)
}),map(res => res.message),filter(status => status === 'completed'),take(1),timeout(100000),concatMap(() => this.getData(id)),catchError(err => throwError(err))
)
}
checkStatus 很简单
checkStatus(id: string){
console.log(id);
return this.httpClient.get<MessageInterface>(this.endPointMain + `/status/${id}`,{headers: this.headers})
}
getData(id: string){
return this.httpClient.get(this.endPointMain + `/results/${id}`,{headers: this.headers,observe: 'response',responseType: 'blob'})
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。