rxjs 如何才能等上一个执行了complete才执行下一个
let blockPut = ((idx) => {
// return new Promise(resolveItem => {
return this.http.request(req).pipe(t => {
return t;
}).pipe(
map(event => {
let loadSize = this.uploadedSize(event, block.size);
uploadSize[idx] = loadSize;
let totalUploadSize = 0;
uploadSize.forEach(itemSize => {
totalUploadSize += itemSize;
});
let percent = Math.floor(totalUploadSize/totalSize * 100).toFixed(2);
val.processChange(Number(percent));
})
)
})(i);
obsVals.push(blockPut);
}
from(obsVals).pipe(mergeMap(t=>{
console.log(t);
return t;
},1)).subscribe(res => {
}, err => {
console.error(err);
val.complete(false);
}, () => {
val.complete(true);
resolveGroup();
});
本来一版情况下这个都是一个一个的执行,但是这个上传文件中blockPut这个Observable.subscribe(func1, err, complete);中func1其实文件并未传完就调用了,导致mergeMap直接开始可下一个。
这个如何是好?
求帮助
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
mergeMap
换concatMap