javascript 在函数Map内React获取

y4ekin9u  于 2023-01-01  发布在  Java
关注(0)|答案(2)|浏览(103)

我尝试为MAP中捕获的每个项目发出请求,但我希望在转到MAP中的其他对象之前等待响应。目前,我的代码正在同时发出所有请求,这最终导致后端崩溃。

function RequestComputers (Computers) {
        Computers.map((e) => {
            Details(e, data.region, data.apitoken).then(data => {  
                if(data)
                setContent2((array) => [...array, data[0]])} ).catch(error => console.log(error))
            
    
        })
    
}
const Details = async (Computer, region, token) => {
    try {
        const test = {'region': region, 'apitoken': token, 'product': '1', 'computer': Computer}
        const response = await fetch('url', {
        method: 'POST',
        headers: {
           'Content-Type': 'application/json'
           },
           body: JSON.stringify(test)
        }
        )
        const data = await response.json()
        return data
       } catch(error) {
          console.log(error)
         } 
    }

我需要等待获取响应,然后再发出另一个获取请求

dl5txlt9

dl5txlt91#

你可以使用一个简单的for循环:

async function RequestComputers (Computers) {

    for ( const computer of Computers ) {

      try {
        const data = await Details(computer, data.region, data.apitoken);
        if ( data ) {
            setContent2((array) => [...array, data[0]]);
        }
      } catch(error){
          console.log(error);
      }

    }

}

Reference

a64a0gku

a64a0gku2#

我认为您可以使用.forEach并等待详细信息:

async function RequestComputers (Computers) {
    
    Computer.forEach((computer) => {
      try {
        const data = await Details(computer, data.region, data.apitoken);
        if ( data ) {
            setContent2((array) => [...array, data[0]]);
        }
      } catch(error){
          console.log(error);
      }
    })
}

相关问题