我如何在返回前链接诺言?

时间:2019-07-17 17:02:14

标签: ionic-framework promise observable chaining

好的,我正在尝试将图像文件编码为base64,然后对API进行POST,然后返回响应。

我遇到的麻烦是,base64编码会异步运行,因此在编码完成之前不会发出api帖子。

任何帮助表示赞赏。

makePost()
  {
    return Observable.create((observer) => {

      this.myPost.base64images = new Array(10);

      for (var i = 0; i < this.myPost.images.length; i++)
      {
        if (this.myPost.images[i])
        {
          this.base64.encodeFile(this.myPost.images[i].path).then((base64File: string) => {

            this.myPost.base64images[i] = base64File;

          }, (err) => {

            this.myPost.base64images[i] = null;
          });
        }
      }

      observer.next(1);
      observer.complete();

    }).pipe(mergeMap((result) => {

      var payload = {
        PostTitle: "Hello",
        Images: this.myPost.base64images
      }

      return this.apiService.makePost(payload).pipe(map(
        response => {

          return response;
        },
        err => {

          return err;
        }
      ));

    }));
  }

0 个答案:

没有答案