繁体   English   中英

在 function Map 中反应获取

[英]React Fetch Inside a function Map

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

    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)
         } 
    }

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

您可以使用一个简单的 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);
      }

    }

}

参考

我认为您可以使用 .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); } }) }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM