Делайте запрос на получение, пока не придет ответ от сообщения запроса vue js - PullRequest
0 голосов
/ 13 июля 2020

Я должен загрузить файл в свое приложение vue. js. Когда я просматриваю файл, я отправляю запрос на публикацию и, пока не получу ответ, мне нужно, например, отправлять запрос каждые 2 секунды. Как я могу это сделать?

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 голосов
/ 13 июля 2020

что насчет этого? Он запрашивает api об обновлении чаще, чем каждые 2 секунды, но, на мой взгляд, лучше, если конечная точка недоступна

var processTimeoutFunction = null;

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

  })
}
...