vue 循环请求 异步操作
如果在一个方法里 先执行完成循环里的所有请求再去执行循环外的请求呢
在 Vue 中,可以使用异步操作来实现循环请求。异步操作可以使用 Promise 或者 async/await 来实现。
下面是一个使用 Promise 实现循环请求的示例代码:
async function loop() {
const requests = [];
for (let i = 0; i < 10; i++) {
requests.push(async () => {
try {
const response = await fetch('/api/request');
const data = await response.json();
console.log(data);
return data;
} catch (error) {
console.error(error);
}
});
}
console.log(requests);
}
loop();
在上面的代码中,我们定义了一个 loop 函数,它接受一个数组作为参数,数组中存放了需要循环请求的数据。在循环中,我们使用 Promise 来异步请求数据,并将请求结果存储在 Promise 对象中。在每次循环中,我们调用 Promise 对象的 then 方法来获取请求结果,并将其打印到控制台上。
需要注意的是,在使用 Promise 实现循环请求时,需要在每次循环中调用 Promise 对象的 then 方法来获取请求结果,并将其打印到控制台上。如果在循环中出现异常,需要在 catch 块中处理异常。
另外,如果需要在循环中执行其他操作,可以将这些操作放在 loop 函数中,并在循环外调用 loop 函数来执行这些操作。
push()
,pop()
,splice()
,sort()
,reverse()
可被vue检测到filter()
, concat()
, slice()
。这些不会改变原始数组,但总是返回一个新数组。当使用非变异方法时,可以用新数组替换旧数组。
vue不能检测以下变动的数组:
1、当你利用索引直接设置一个项时,vm.items[indexOfItem] = newValue
2、当你修改数组的长度时,例如: vm.items.length = newLength