2017-09-13 5 views
1

J'ai un problème avec les ressources de prélecture pour l'application de réaction. J'ai une fonction qui devrait chercher des ressources json et les assigner à une propriété d'objet dans une boucle. La fonction devrait alors renvoyer l'objet avec jsons déjà résolu, mais au lieu de cela renvoie l'objet avec les propriétés en tant que promesses non résolues.l'exécution du bloc js jusqu'à ce que la requête async soit terminée

Est-il possible d'arrêter l'exécution du code js jusqu'à ce que les promesses soient complétées pour que la fonction renvoie des données correctes?

Oui, quelque chose comme une requête synchrone.

async function getJson (file, url) { 

    const response = await fetch(`${url}/${file}.json`); 
    const json = await response.json(); 

    return json; 
} 

async function getTranslations(files, url) { 
    let r = {}; 

    files.map((file, i) => { 
    r[file] = await getJson(file, url); 
    }); 

    return r; 
} 

Répondre

0

Je ne pense pas que vous devriez utiliser 'map' comme ça - pour remplir un objet avec lequel vous êtes le meilleur. Bien que je ne puisse pas garantir que c'est le problème.

async function getTranslations(files, url) { 
    let r = {}; 

    files.forEach(file => r[file] = await getJson(file, url)); 

    return r; 

}