我有一个使用加载方法加载项目的组件。
我需要另一个方法来多次调用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>
答案 0 :(得分:0)
这是我的解决方案
new Vue({
el: '#cmp',
data: {
items: []
},
methods: {
loadItems() {
let vm = this;
return new Promise(function (resolve, reject) {
['one', 'two', 'three'].forEach(item => {
vm.items.push(item);
});
resolve();
})
},
ultraLoadItems() {
for (var i = 1; i <= 5;i++) {
this.loadItems();
}
}
}
})