【发布时间】:2021-01-28 22:54:40
【问题描述】:
我有以下一段代码,基本上我正在尝试将大文件的块上传到从服务返回的签名 url..
只有在返回的 forkjoin 中的所有 PUT 请求都已完成后,我才需要调用 uploadcompleted 端点,但我面临的问题是我无法等待将块上传到签名的 url。
我在这里做错了什么?任何帮助将不胜感激。提前致谢。
filechunks(chunk: any, uploadUrls: string[], index) {
let observableBatch = [];
const headers: HttpHeaders = new HttpHeaders({
'content-type': 'application/json'
});
observableBatch.push(this._http.put<any>(uploadUrls[index], chunk, { headers }))
return forkJoin(observableBatch).pipe(delay(1000));
// const createRequest = () => of(this._http.put<any>(uploadUrls[index], chunk, { headers }));
// return forkJoin(createRequest).pipe(delay(1000));
}
uploadfileinchunks(uniqueFileId: string, uploadId: string, chunks, uploadUrls): Observable<any> {
let response = [];
chunks.map( (chunk, i) => {
let response = this.filechunks(chunk, uploadUrls, i).toPromise();
console.log(response)
});
const params = {
some-id: some-id
};
return this._http.post<FileData>(
`${somurl}/uploadcompleted`,
{},
{ {}, params }
);
}
【问题讨论】:
-
this.filechunks(chunk, uploadUrls, i).toPromise();这将异步执行,uploadfilechunks 将立即运行 post 而无需等待
标签: javascript angular promise rxjs observable