【发布时间】:2026-02-03 13:10:01
【问题描述】:
我正在制作一个 Vue.js 网络应用程序,但遇到了一些 javascript 问题。我将描述整个 Vue.js 设置以防万一,但我认为它并不真正相关。我知道还有其他关于这个问题的帖子,但是经过一天半的尝试,我找不到任何可以帮助我解决问题的帖子。
问题:
我正在尝试从我的前端访问我的后端数据。我正在使用如下所示的 axios 请求:
axios.request({...}).then(function (response) { ... }.catch(function (error) { ... });
.then 中的 response 获得了我想要的正确数据(一个数组),但我不知道如何获取该数据,因为 .then 是一个承诺。我需要把它弄出来的原因是因为这一切都在组件内的方法中,我想将响应等同于我的数据变量中的值。所以基本上我想做:this.myvar = this.myvar.concat(response)
但是在.then 内部我不在我的组件范围内,所以我想从.then 中获取响应,以便我可以将我的数据更改为它。
我知道理论上我可以附加更多 .thens 来做我想要的响应,这就是 javascript 处理同步性的方式,但是我不想对数据做任何事情,除了做出一个输出范围变量等于它。
我的尝试:
我发现的一件事是我可以在 axios 请求之前声明一个单独的变量,并且由于某种原因,我可以在 .then 中使用该变量。因此,我尝试将一个新变量初始化为指向超出范围(this.myvar)的组件数据变量的指针,然后将.then 中的该变量更改为响应,但这会引发其他问题,因为我最终返回了我的函数(包含 axios 请求和所有内容),然后该变量在 .then 内部更改为同步性并导致其他问题。
编辑: 我的代码 这是组件内部的计算方法。它必须返回 this.myvar,因为它在 Vuejs 模板中被调用。
MyFunc: function () {
var a = this.myvar;
axios.request({
method: 'post',
url: 'http://myURL:MyPort/query',
data: {
'mydata': dataToSend
},
}).then(function (response) {
a = a.concat(Object.values(response.data.results));
}).catch(function (error) {
console.log(error);
});
return this.myvar
}
这不是我第一次遇到 javascript 中的 Promise 问题,我尝试过阅读它们,但我无法完全理解如何处理它们。任何帮助将不胜感激。
【问题讨论】:
标签: javascript asynchronous promise vuejs2 axios