Vue Js 在我用 Axios get 调用的函数内部,将传入的数据打印到数组中

Posted

技术标签:

【中文标题】Vue Js 在我用 Axios get 调用的函数内部,将传入的数据打印到数组中【英文标题】:Vue Js While inside the function I called with Axios get, printing the incoming data into the array 【发布时间】:2022-01-23 19:44:13 【问题描述】:

在屏幕截图中的函数内部,我使用 axios.get 将后端函数中的数据添加到数组中。但是当我离开 axios 时,我打印的数组的值是未定义的。

我正在从后端获取字符串值。我希望能够通过返回它以不同的方法使用它。请帮我。我找不到解决方案。

getReasonsForWaitingCustomer() 
  this.adimKodlariLastString = "";
  if (this.$route.params.status == "musteri-bekleniyor") 
            axios.get(URL + "xxx/xxx?xxx=xxx)
                .then(response => 
                    for (var i = 0; i < response.data.data.length; i++) 
                        if (this.stepCode.includes(response.data.data[i].adim_kodu) == false) 
                            this.stepCode.push(response.data.data[i].adim_kodu);
                        
                    
                    for (var j = 0; j < this.stepCode.length; j++) 
                            this.adimKodlari += this.stepCode[j] + ",";
                        
                    this.adimKodlariLastString = this.adimKodlari.slice(0, -1);
                    console.log("inAxiosThen",this.adimKodlariLastString);
                )
        
        console.log("afterAxios",this.adimKodlariLastString);
return "apfapofapkapfka" --> It's working
return this.adimKodlariLastString --> It's not working. I want this to work.
,

在我查看的解决方案示例中,传入的值用于 html 标记。但我希望能够在方法中使用传入的值。

When the string values I want to use are in .then(response), I can get them when I press the console.

When I press the console other than .then() I don't get the values.

【问题讨论】:

【参考方案1】:

您不会以这种方式获取任何数据,因为 axios 调用是异步的。最简单、更干净的方法是:

const response = await axios.get('url')
console.log(response.data)
this.adimKodlariLastString = response.data
// and then you could do your logic

或者,要让它与您的代码一起使用,您只需添加:

await

在 axios 之前(你可以用纯 Promise 来做,但你最终会在 Promise 中得到 Promise)。

【讨论】:

感谢您的回答。是的,正如您所说,我得出了一个解决方案的结论。但现在我的数据作为承诺出现了。我查看了他们的解决方案,但我什么都不懂。在解决方案中,他们手动分配了一个值并调用了结果。我不知道如何在 PromiseResult 中获取我的传入数据。我很困惑。【参考方案2】:

当前,这是我的函数的最后状态。这是有效的。返回成功。

async getReasonsForWaitingCustomer() 
  let adimKodlariLastString = "";
  let stepCode = [];
  let adimKodlari = "";
  if (this.$route.params.status == "xxx") 
            const response = await axios.get(URL + "xxx/xxx");
                    for (var i = 0; i < response.data.data.length; i++) 
                        if (stepCode.includes(response.data.data[i].adim_kodu) == false) 
                            stepCode.push(response.data.data[i].adim_kodu);
                        
                    
                    for (var j = 0; j < stepCode.length; j++) 
                            adimKodlari += stepCode[j] + ",";
                        
                    adimKodlariLastString = adimKodlari.slice(0, -1);
        
        console.log("adimKodu",adimKodlariLastString);
      return adimKodlariLastString;
,

Promise in console

我查看了他们的解决方案,但我什么都不懂。在解决方案中,他们手动分配了一个值并调用了结果。我不知道如何在 PromiseResult 中获取传入的数据。

【讨论】:

【参考方案3】:

好消息。我创立了这个问题的解决方案。我希望它对那些正在寻找解决方案的人有用。正如我所提到的,我说过我想在另一个函数中使用作为提示的值。

I'm successfully called my values in this function

我已将此函数转换为异步。我带来了第一个函数作为等待。

Last result in the console

【讨论】:

您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center。

以上是关于Vue Js 在我用 Axios get 调用的函数内部,将传入的数据打印到数组中的主要内容,如果未能解决你的问题,请参考以下文章

进行 axios.get 调用时出现 CORS 错误

vue.js 中的 $http.get() 与 axios.get() 有啥区别?

用axios.get从静态目录加载json文件。

vue.js - axios Get方法传参给 .net core webapi。

Vue.js,如何通过 axios 在 api 链接中发送对象?

vuejs 应用程序中异步 axios 调用的多个响应的竞争条件