Fonction asynchrone renvoyant une promesse au lieu d'une valeur
Dans la programmation asynchrone/attente, une fonction asynchrone renvoie toujours une promesse. Cette promesse représente l'achèvement éventuel du travail asynchrone de la fonction.
Lorsque vous appelez une fonction asynchrone dans un autre contexte asynchrone, vous pouvez utiliser wait pour faire une pause jusqu'à ce que la promesse soit satisfaite. Cependant, dans un contexte non asynchrone (souvent le niveau supérieur ou le gestionnaire d'événements), vous devez utiliser directement la promesse :
latestTime() .then(time => { console.log(time); }) .catch(error => { // Handle/report error });
Dans les environnements modernes, l'attente de niveau supérieur est prise en charge dans les modules :
const time = await latestTime();
Pour mieux comprendre, examinons une version de rappel de promesse explicite de votre fonction asynchrone :
function latestTime() { return new Promise((resolve, reject) => { web3.eth.getBlock('latest') .then(bl => { console.log(bl.timestamp); console.log(typeof bl.timestamp.then == 'function'); resolve(bl.timestamp); }) .catch(reject); }); }
Dans ce rappel version :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!