发出获取请求,直到来自请求发布js的响应

时间:2020-07-13 17:19:14

标签: vue.js axios

我应该在vue.js应用程序中上传文件。浏览文件时,我会发出发布请求,直到得到响应为止,例如,我需要每2秒发出一次get请求。我该怎么办?

uploadFile(event) {
    this.isLoadingProcess = true;

    console.log(this.isLoadingProcess);
    let data = new FormData();

    this.file = event.target.files[0];

    data.append('name', 'uploaded-file');
    data.append('file', event.target.files[0]);
    const options = {
        headers: {
            'Content-Type': event.target.files[0].type,
        },
    
        onUploadProgress: function (progressEvent) {
            const {loaded, total} = progressEvent;
            let percentCompleted = Math.floor((loaded * 100) / total);
            //console.log(percentCompleted);
            if (percentCompleted !== 100) {
               axios.get(url, {data: progressId})
                        .then(response => {
                            this.progress = response.data.progress;
                           // console.log(this.progress);
                            console.log(response.data.progress);
                        })
            }
        },
    };
        axios.post(
        url,
        data,
        options
    )
        .then(response => {
            console.log(response);

        })
        .finally(()=> {
            this.isLoadingProcess = false;
        })

1 个答案:

答案 0 :(得分:0)

这是什么? 它每隔2秒就会向api询问一次有关更新的信息,但我认为最好在端点不可用的情况下

var processTimeoutFunction = null;

function checkProgress() {
  axios.get('ckeck-process', ...).then(response => {
    if (response.processIsActive) {
      processTimeoutFunction = setTimeout(() => checkProgress(), 2000);
    } else {
      clearTimeout(processTimeoutFunction);
      this.isLoadingProcess = false;

  })
}