rxjs 如何才能等上一个执行了complete才执行下一个

发布于 2022-09-12 00:37:46 字数 1200 浏览 23 评论 0

        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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

旧时模样 2022-09-19 00:37:46

mergeMapconcatMap

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文