Maison  >  Questions et réponses  >  le corps du texte

Renvoie une promesse lors de l'appel d'une fonction dans la table : essayez de renvoyer un appel de fonction Promise

<p><pre class="brush:php;toolbar:false;">let data = [223, 34, 456, 56, 67]; fonction getDataFromApi(paramfromTableCell){ laissez postData = {data : paramfromTableCell} let result = apiResponse(url, 'post', postData).catch((err => console.log(err))) renvoyer le résultat ; } data.map((valeur)=>{ retour( <th>{getDataFromApi(value)}</th> ) })</pré> <p>Appel d'une fonction dans une cellule de tableau, mais elle renvoie une promesse. Lors de l'appel de la fonction, elle prend un paramètre et renvoie le nom basé sur le numéro, mais elle renvoie une promesse. Existe-t-il un moyen de résoudre ce problème ? </p>
P粉340264283P粉340264283410 Il y a quelques jours505

répondre à tous(2)je répondrai

  • P粉970736384

    P粉9707363842023-09-06 12:12:35

    Vous devezawait这个promise来获取结果。否则你只会得到这个promise。所以在你的map函数中添加async,然后使用await :

    data.map(async (value)=>{
      return(<th>{await getDataFromApi(value)}</th>
    )

    répondre
    0
  • P粉832212776

    P粉8322127762023-09-06 00:30:22

    On dirait que vous utilisez React. Vous devez enregistrer votre réponse dans l'état de React.

    Voici un exemple de code, il devrait ressembler à ceci (non testé) :

    let data = [223, 34, 456, 56, 67];
    const [responses, setResponses]  = useState([]);
    
    useEffect(() => {
       const getAllResponses = () => Promise.all(
           data.map(val =>  getDataFromApi(val))
       );
    
       getAllResponses().then(responses => setResponses(responses));
    }, [data])
    
    function getDataFromApi(paramfromTableCell){
        let postData = {data : paramfromTableCell}
        return apiResponse(url, 'post', postData).catch((err => console.log(err)))
    }
    
    responses.map((value)=>{
     return(
           <th>{value}</th>
     )
    })

    répondre
    0
  • Annulerrépondre