首页 > 解决方案 > Typescript Promise 文件上传

问题描述

大家好,我在每个文件上传到服务器后都试图打开一个对话窗口。但是,在所有文件上传之前,该窗口首先打开。有人可以告诉我我做错了什么吗?

public UploadAll() {

    this.doAsyncTask().then(() => 

    this.dialog.open(DialogOverviewExampleDialog, {
        height: '200px',
        width: '300px',
    }));
}

doAsyncTask() {

    var promise = new Promise((resolve, reject) => {
    this.fileUploads.forEach((fileUpload) => {
        fileUpload.upload();
        resolve();
    });
});
return promise;
}

标签: typescript

解决方案


您的代码的问题是您首先解决了承诺,fileUpload而且您不要等到上传完成

public UploadAll() {

    this.doAsyncTask().then(() => 

    this.dialog.open(DialogOverviewExampleDialog, {
        height: '200px',
        width: '300px',
    }));
}

doAsyncTask() {

 return Promise((resolve, reject) => {
    const promises : Array<Promise> = [];
    this.fileUploads.forEach((fileUpload) => {
           promises.push(fileUpload.upload());
    });
    Promise.all(promises)
         .then(() => resolve())
         .catch((err) => reject(err));
  });
}

推荐阅读