Visualiser des objects en javascript (sous le capot)

Je suis très curieux de savoir comment les objects sont affichés dans nodejs et, dans ce cas, promis. Lors de l’utilisation de console.log(promiseObject) la sortie est de type.

{state:pending}

Cela me semble très étrange, car une fonction .then() est invoquée sur cet object, donc je m’attendrais à le voir là-bas.

Essayez vous-même avec ce code

  function a(){ var deferred = q.defer(); setTimeout(function(){ deferred.resolve(); },4000) return deferred.promise; } var p1 = a() console.log(p1) //outputs {state:pending} while i was expecting something like //while i was expecting it to be {state:pending,then:function()} 

Se sent très arcane pour moi. J’ai également eu des problèmes similaires lors de l’impression d’objects dans le navigateur, il semble que certains champs soient .. masqués? (bien que je sache rien de tel en javascript)

Utilisez un débogueur, votre navigateur en a probablement un bon. F12 dans votre navigateur et cliquez sur le bouton Exécuter ci-dessous pour explorer un object Promise (fonctionne dans Chrome / Chromium, Edge, Firefox):

 console.clear(); var a = new Promise(function(res, rej) { res(); }); console.dir(a); 
 var p1 = a() console.log(p1) 

Ici, p1 appelle une fonction qui renvoie une promesse. Ainsi, lorsque vous vous connectez à la console, vous verrez le statut de la promesse. Mais vous voulez que l’object fasse quelque chose comme

 function a(){ var deferred = q.defer(); setTimeout(function(){ var data = {status: 'resolved', value: '3'}; deferred.resolve(data); },4000) return deferred.promise; } a().then(function (data) { console.log(data); //prints {status: 'resolved', value: '3'} } 

espérons que cela a aidé