首页 > 解决方案 > 我可以在等待异步函数时设置变量值吗?

问题描述

我有一个异步函数fileUpload(),它将文件上传到服务器并在完成后返回一个承诺。当用户想要提交不同的表单时,submitForm()await fileUpload在发布表单之前。

在等待时await fileUpload,我想告诉用户系统正在等待上传完成。这是我想象的(但显然行不通):

async fileUpload() {
   await Promise.all(
   // Does a for loop here and uploads all files
   )
}

async submitForm() {
  const FormBody = new FormData();

  await fileUpload; // I want to set this.IsUploading = true if awaiting. If not awaiting, then this.IsUploading = false; 

  this.$axios.post('/api', FormBody)
}

await fileUpload不使用括号,因为如果我这样做,await fileUpload()那么它会再次调用该函数。但是,我如何this.IsUploadingtrue等待fileUpload()完成时设置为,然后false在没有更多等待的情况下将其设置为?

标签: javascriptvue.jsasynchronous

解决方案


也许只是在调用前后设置变量await

this.IsUploading = true;

await fileUpload;

this.IsUploading = false;

推荐阅读