首页 > 解决方案 > Vue 在两个 for 循环中调用 Api

问题描述

我有 2 个数组,一个有 2 个项目,一个有 5 个项目。问题是我试图将第一个数组中每个项目的描述与第二个数组中每个项目的描述进行比较。我正在通过一个自由文本相似度 api 进行比较。对于结果我喜欢有两个数组我创建的变量有 5 个项目(allSimilarity)。但是当我运行这段代码时,它会执行 2 个包含 10 个项目的数组。我想知道如何解决这个问题?

所以我为此编写了以下代码:

let allSimilarity=[]
const newIdeas=[{title:"Idea 1",description:"some text 1"},{title:"Idea 2",description:"some text 2"}]
const oldIdeas=[{title:"Idea 1",description:"some text 4"},{title:"Idea 2",description:"some text 3"},{title:"Idea 3",description:"some text 1"},{title:"Idea 4",description:"some text 2"},{title:"Idea 5",description:"some text 5"}]
newIdeas.forEach(item=>{
allSimilarity=[]
oldIdeas.forEach(async(oldIdea)=>{
    let text1=item.description.split(" ").join("%20") + "%20";
 let text2=oldIdea.description.split(" ").join("%20") + "%20";
//Here I am calling the api
  this.compareIdeas({text1,text2}).then((resp)=>{
    let similarity=resp
    allSimilarity.push({similarity,oldIdea:oldIdea.title,newIdea:item.title})
  })
})
console.log("This is all similarity",allSimilarity);
//Then I want to do some other method
})

标签: arraysapivue.jsforeachasync-await

解决方案


推荐阅读