vue 循环请求 异步操作

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 函数来执行这些操作。

  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/7436028
  • 这篇博客也不错, 你可以看下vue 循环列表双向绑定后改变数据造成赋值死循环的解决方案
  • 除此之外, 这篇博客: Vue数据更新视图不更新的几种解决方案中的 数组数据变动,使用某些方法操作数组,变动数据时,有些方法无法被vue监测 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • push()pop()splice()sort()reverse()可被vue检测到
    filter(), concat(), slice()。这些不会改变原始数组,但总是返回一个新数组。当使用非变异方法时,可以用新数组替换旧数组。

    vue不能检测以下变动的数组:
    1、当你利用索引直接设置一个项时,vm.items[indexOfItem] = newValue
    2、当你修改数组的长度时,例如: vm.items.length = newLength