【发布时间】:2018-12-11 03:34:12
【问题描述】:
我有一个使用加载方法加载项目的组件。
我需要另一个方法多次调用 load 方法来加载更大的数据块。
我需要进行异步请求,等待第一次完成后再运行。
我想我需要建立一个承诺或其他东西,但我没有这样做。有人对此有好的解决方案吗?
这是一个解释我的问题的 jsfiddle。 https://jsfiddle.net/qa5sm7hj/21/
这是javascript组件本身
new Vue({
el: '#cmp',
data: {
items: []
},
methods: {
loadItems() {
//pretend this is an http request that fetches data and then push them to items array.
['one', 'two', 'three'].forEach(item => {
this.items.push(item);
});
},
ultraLoadItems() {
for (var i = 1; i <= 5;i++) {
//I want to load new items 5 time in a row
//and wait until each iteration is done.
this.loadItems();
}
}
}
})
这里是 HTML
<div id="cmp">
<div>
<button @click="ultraLoadItems">Ultra load</button><br>
<span>{{ items.length }}</span>
<ul>
<li v-for="item in items">{{ item }}</li>
</ul>
</div>
</div>
【问题讨论】:
-
您需要对 Promise 及其相关回调进行一些研究。您所描述的是发出请求,然后将回调附加到该请求承诺,一旦完成,它将执行另一个请求。
标签: javascript asynchronous vue.js