Vue Axios功能包括异步功能结果

时间:2020-08-28 12:16:31

标签: asynchronous vuejs2 axios

这是我的vue.js函数,它调用python API。问题出在等待上

 async getLinearSolver() {
          
            const path = '/api/nutritional_constraints_1';
            
            var vm = this

            var json = await this.formatDataForPulp()
            
            axios.post(path,json )
                .then((res) => {
                    console.log(res)
                    vm.linear_result = "Write my res data "   
                })
                .catch((error) => {
                    console.error(error);
                });
        }

console.log(res)可以:

Object { data: {…}, status: 200, statusText: "OK", headers: {…}, config: {…}, request: XMLHttpRequest }

但无法进行模板修改,无法将任何变量分配给vm.linear_result

vm.linear_result = "Write my res data "不起作用

[Vue warn]: Error in render: "Error: Cannot find module './undefined'"

found in

---> <NutritionalConstraints> at src/components/NutritionalConstraints.vue
       <App> at src/App.vue
         <Root> vue.runtime.esm.js:619
Error: Cannot find module './undefined'
    webpackContextResolve .*$:51
    webpackContext .*$:45
    render NutritionalConstraints.vue:216
    renderList VueJS
    render NutritionalConstraints.vue:165
    VueJS 14
    _callee$/< NutritionalConstraints.vue:235
    promise callback*_callee$ NutritionalConstraints.vue:220
    Babel 11
    onSubmit NutritionalConstraints.vue:290
    VueJS 21
vue.runtime.esm.js:1888

请帮助我,我真的不知道该怎么办。

我有一个类似的查询,没有外部AWAIT函数,它运行完美。

这是一个导致相同问题的简单示例:

 async getLinearSolver() {
          
            const path = '/api/nutritional_constraints_1';
            
            var vm = this
           
            this.formatDataForPulp().then((res) => {
                    console.log(res) // Working
                     vm.a_template_variable ="Write my res data "// Not working !  
                })

           
        }

1 个答案:

答案 0 :(得分:-1)

最后发现了问题。

我需要在我的formatDataForPulp()函数内部深度克隆一些json数组。 像这样:

 var  data = {
                "items": JSON.parse(JSON.stringify(this.items)), // WE need to do a deep clone otherwize it crashes vue.js 
                "constraints": JSON.parse(JSON.stringify(this.constraints)) // WE need to do a deep clone otherwize it crashes vue.js 
        }

我以前没有这样做,所以vue.js在我的formatDataForPulp()函数期间修改了我的双向绑定数据,然后vue.js崩溃了!问题不是来自ASYNC系统。