0
votes

JavaScript Fetch Impossible de retourner la valeur Appeler une autre fonction

Je ne suis pas en mesure d'obtenir une valeur lorsque j'ai appelé enregistreur () code> même si j'ai réussi à obtenir de la valeur lorsque je me suis connecté dans l'enregistreur code> Je ne sais pas quoi je ne sais pas quoi est faux avec cela.

The JSON String undefined

The JSON String [{"Id":1}]


2 commentaires

Êtes-vous sûr que vous l'URL et le réglage sont les deux corrects et vous pouvez obtenir le résultat de l'API? Vérifiez que dans l'onglet Réseau


Oui, j'ai réussi à y avoir une réponse. Mais quand j'ai appelé la fonction à nouveau, cela ne fonctionne pas.


3 Réponses :


0
votes

Ce code est asynchronisé. La ligne console.log (LOGTEST) code> sera exécutée avant que la promesse de récupération ne soit remplie. Essayez d'ajouter quelque chose console.log (1) code> console.log (2) code> Pour avoir une idée de ce que l'on appelle dans quel ordre.

Pour faire ce travail comme prévu et Utilisez la valeur de retour d'une fonction ASYNC de manière synchrone, vous pouvez utiliser Asyc / attendre. https://developer.mozilla.org/en- US / DOCS / Web / JavaScript / Référence / Déclarations / Async_function P>

function loadRes (res){
    console.log('loadres called')
    return res.json();
  }

function logger (reply){
    let stringReply =  JSON.stringify(reply);
    console.log("The JSON String " + stringReply) 
    return stringReply;
  }

function logger (reply){
    console.log('logger called', reply)
    let stringReply =  JSON.stringify(reply);
    console.log("The JSON String " + stringReply) // The logged result is "The JSON String [{"Id":1}]"
    return stringReply;
  }

async function myAsyncFunction(apiURL, setting) {
  console.log('async function called')
  const result = await fetch(apiURL, setting).then(json => json.json())
  return result
}

myAsyncFunction('https://jsonplaceholder.typicode.com/todos/1').then(result => logger(result))


2 commentaires

J'ai eu une erreur d'erreur : impossible de définir des en-têtes après leur envoi au client , il peut être dû à la fonction ASYNC qui interfère en quelque sorte


Oui, tu as raison. Il est probable que le code a fini d'exécuter avant qu'il ait réussi à obtenir une valeur de Fetch.



0
votes
var logTest = logger();

console.log(logTest);
Maybe You need pass parameters to logger("{"something":1}")

0 commentaires

0
votes

Je pense que vous avez besoin d'une étude plus sur async code> et prometteur code> d'abord.

fetch().then().then()


0 commentaires