【发布时间】:2019-12-11 13:14:42
【问题描述】:
我有 Vue.js 应用程序,它使用 Axios 从 API 获取一些复杂数据,然后可视化这些数据。 我的代码与此类似:
{
data: () => ({
data: null, // or Object, it doesn't matter now
loading: false,
errored: false,
loadingMessage: ''
}),
methods: {
loadData: function() {
this.loading = true;
this.loadingMessage = 'Fetching Data';
axios.get('api/url/').then((response) => {
this.data= response.data; // or this.$set(this, 'data', response.data), it doesn't matter now
this.loadingMessage = 'Process Data';
this.processData();
})
.catch(function () {
this.errored= true;
})
.then(function () {
this.loading = false;
})
},
processData: function() {
// process data
}
}
}
然后我点击模板中的按钮,该按钮调用loadData() 函数。
它工作正常,但获取数据需要一些时间,处理也需要一些时间,并且 Vue 仅在 axios 请求完成时更改模板和变量。所以我只看到Fetching Data 消息,但没有看到Process Data。
如何向用户展示现在处理数据的阶段?
也许我应该在watch methods 中调用processData() 函数,但这对我来说似乎有点过头了。
更新
我最终得到了setTimeout() 换行符。请参阅下面的答案。
【问题讨论】:
标签: vue.js asynchronous axios