Truffle Test - Solidity: Wie greife ich auf den Wert des Promise-Objekts zu? [Objekt Versprechen] [BigNumber]

a.getB.call().then(function (f) { console.log(f[1][0]) });

Ausgänge:

BigNumber { s: 1, e: 20, c: [ 5000000 ] }

Wie kann ich auf den Wert in c zugreifen?

Wie kann ich Objekt f in einer Javascript-Variablen speichern?

Da ich ein Array von Arrays speichere, kann ich die Länge des Promise-Objekts erhalten?

f.toString()Überprüfen Sie die BigNumber-Bibliothek auch unter github.com/MikeMcl/bignumber.js
Danke für die Hilfe. Ich habe tatsächlich eine andere Frage hinzugefügt, die irgendwie verwandt ist.

Antworten (1)

Wie kann ich auf den Wert in c zugreifen?

Die Zahl ist nicht nur das, was darin enthalten ist, csondern die gesamte BigNumber-Notation, auf die mit a zugegriffen werden kannf.toString()

Wie kann ich Objekt f in einer Javascript-Variablen speichern?

f.toString()gibt Ihnen eine Zeichenfolge, die in einer Variablen gespeichert werden kann. Genauso wie Sie es im BigNumberObjekt behalten und verwenden können .toString, um auf einen lesbaren Wert zuzugreifen

Da ich ein Array von Arrays speichere, kann ich die Länge des Promise-Objekts erhalten?

Diese Frage ergibt angesichts der obigen Antworten keinen Sinn. Diese Art von Struktur ist die interne Darstellung der im BigNumberObjekt gespeicherten Zahl

var b; a.getB.call().then(function (f) { b = f }); console.log('b: ' + b);Ausgänge:b: undefined
das liegt daran, dass die darin enthaltene Funktion thennoch nicht ausgeführt wird. console.log wird gedruckt, bevor bzugewiesen wird
Scheint richtig. Behoben mit var b; await a.getB.call().then(function (f) { b = f }); console.log('b: ' + b);Danke!