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直接开始可下一个。
这个如何是好?
求帮助

阅读 3.8k
1 个回答

mergeMapconcatMap

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进