finally () не работает в Vuejs другое приложение - PullRequest
0 голосов
/ 23 декабря 2018

Недавно я сделал этот учебник.

В этом приложении я могу успешно запустить приложение vuejs и axios.then.catch.finally или this.form.then.catch.finally.

Но я добавил npmна мой старый проект, который был недавно обновлен до Laravel 5.7.В моем приложении я не могу добавить функцию finally.Если я это сделаю, он говорит:

Uncaught TypeError: axios.post (...). Then (...). Catch (...). Наконец-то не является функцией

Мой app.js:

/**
 * First we will load all of this project's JavaScript dependencies which
 * includes Vue and other libraries. It is a great starting point when
 * building robust, powerful web applications using Vue and Laravel.
 */

// require('./bootstrap');
import Vue from 'vue'
window.Vue = Vue
window.axios = require('axios');
import { Form, HasError, AlertError } from 'vform'
window.Form = Form;

Vue.component(HasError.name, HasError)
Vue.component(AlertError.name, AlertError)

Vue.component('pagination', require('laravel-vue-pagination'));
//select 2
import vSelect from 'vue-select'
Vue.component('v-select', vSelect)

//sweet alert 1
import swal1 from 'sweetalert';
window.swal1 = swal1;

import swal from 'sweetalert2'
window.swal = swal;
const toast = swal.mixin({
    toast: true,
    position: 'top-end',
    showConfirmButton: false,
    timer: 3000
});
window.toast = toast;

/**
 * Next, we will create a fresh Vue ap
 *
 *
 * plication instance and attach it to
 * the page. Then, you may begin adding components to this application
 * or customize the JavaScript scaffolding to fit your unique needs.
 */

Vue.component('example-component', require('./components/ExampleComponent.vue'));
Vue.component('timetable-component', require('./components/TimetableComponent.vue'))   

/* filter active and inactive */ 
Vue.filter('activeInactive', function (value) {
    if(value==1){
        return 'Active'
    }else{
        return 'Inactive'
    }
})

const app = new Vue({ 
    el: '#app',
    data:{

    },
    methods:{

    },
    mounted(){

    }
});

Я думаю, что мой app.js точно такой же, как учебник app.js для запроса формы.Другое дело, что в этом уроке он нигде не использовал импорт axios, но плавно использовал его.Но без импорта я не могу использовать axios.then.Как он использовал это, не импортируя axios?Как я могу использовать finally с then.catch?

компонент:

loadSite() {
  axios
    .get("/api/site/list")
    .then(({ data }) => {
      console.log(data);
      this.siteList = data;
    })
    .catch(function(error) {
      console.log(error);
    }).finally(()=>{ 

    });
},

Ответы [ 2 ]

0 голосов
/ 12 июня 2019

У меня та же проблема, только что решил ее, включив этот файл

<script src="https://polyfill.io/v3/polyfill.min.js?features=Promise.prototype.finally" defer></script>

0 голосов
/ 27 декабря 2018

Поскольку документ , чтобы finally работал, вам нужно добавить promise.prototype.finally

npm install axios promise.prototype.finally --save

, а затем

const axios = require('axios');
require('promise.prototype.finally').shim();

axios
  .get('http://www.example.com/user')
  .then((response) => {
    console.log(response.data);
    return response;
  })
  .finally(() => {
    console.log('this will always be called');
  });
...