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 调用的函数内部,将传入的数据打印到数组中的主要内容,如果未能解决你的问题,请参考以下文章
vue.js 中的 $http.get() 与 axios.get() 有啥区别?
vue.js - axios Get方法传参给 .net core webapi。