问题描述
我无法使其正常工作,如果有人能指出我正在尝试的问题和问题,我将不胜感激。我不确定问题是与 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 (将#修改为@)