J'ai 2 fonctions au total, une fonction qui renvoie une nouvelle promesse et se résout en une variable, comme ceci:
function getInfo() {
return promiseTest(require('./allData.json'));
}
et puis une autre fonction où j'appelle cette fonction, puis en insérant pour la variable data un objet JSON.
function promiseTest(data) {
const delay = 200;
return new Promise(resolve => setTimeout(() => resolve(data), delay));
}
Ma question est donc de savoir comment lire les données à partir desquelles la promesse résout la fonction getInfo , juste dans un simple console.log?
Dites: console.log (getInfo (). data) (mais évidemment cela ne ça ne marche pas mais j'espère aider avec ce que je cherche).
3 Réponses :
Avec les promesses, vous devez utiliser / extraire les données en utilisant un .then (); so
getInfo().then((data) => console.log(data));
Y a-t-il une raison particulière pour laquelle vous devez utiliser une promesse? Votre exemple semble approprié pour utiliser simplement la fonction setTimeout
La valeur renvoyée par la promesse est transmise comme premier paramètre dans la fonction .then .
Veuillez consulter: https: // developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/then
Dans votre cas, cela pourrait être: getInfo (). then (data => console.log (données));
J'espère que cela vous aidera.
Il y a plusieurs façons de procéder.
JavaScript a introduit les mots-clés async et await il y a quelques années . C'est une syntaxe spéciale simplifiant la programmation asynchrone. Vous pouvez rendre vos fonctions asynchrones et utiliser await lors de leur appel. Il enveloppe fondamentalement le entier. then () mess.
function promiseTest(data) {
const delay = 200;
return new Promise(resolve => setTimeout(() => resolve(data), delay));
}
function getInfo(callback) {
promiseTest(require('./allData.json')).then(data => callback(data));
}
getInfo(data => console.log(data));
Ensuite, vous pouvez alors obtenir le résultat de getInfo () en l'attendant: p >
function promiseTest(data) {
const delay = 200;
return new Promise(resolve => setTimeout(() => resolve(data), delay));
}
function getInfo() {
return promiseTest(require('./allData.json'));
}
getInfo().then(data => console.log(data));
Voici quelques lectures qui devraient vous aider:
https://javascript.info/async-await https://developer.mozilla.org/fr/docs/ Web / JavaScript / Reference / Instructions / async_function
Vous pouvez également utiliser l'ancienne méthode, en utilisant then:
console.log(await getInfo());
Vous pouvez transmettre un rappel à votre méthode getInfo.
async function promiseTest(data) {
const delay = 200;
return new Promise(resolve => setTimeout(() => resolve(data), delay));
}
async function getInfo() {
return await promiseTest(require('./allData.json'));
}
Vous ne pouvez pas simplement rendre une opération asynchrone synchrone par magie. Utilisez async / await, transmettez des rappels ou utilisez .then.