2017-12-18 10 views
0

Ich habe ein Problem mit einem Objekt, das Versprechungen enthält und auf die Cilent-Seite zugreift. Ich möchte Zugriff auf die Werte haben, aber alles, was ich erhalten habe, war ein leeres Objekt.Leeres Objekt auf Client-Seite. Wie verhalte ich Versprechenswerte?

Hier ist der Code auf dem Server-Seite:

router.get('/toExcess', function(req, res){ 
    console.log(req.query); 
    const response = logic.adder(req.query.a, req.query.b); 
    const convertToModular = logic.modularRecordExcess(response); 
    const convertToOpposite = logic.oppositeRecordExcess(response); 
    const convertToObjective = logic.objectiveRecordExcess(response); 
    convertToObjective.then(function (response) { 
    var add = { 
    modular: convertToModular, 
    opposite: convertToOpposite, 
    objective: convertToObjective, 
} 
console.log(add); 
res.send(add); 
}).catch(function(err){ 

}); 
}); 

und es ist Log-Konsole auf Server-Seite:

{ modular: Promise { [ '1.', '0111', '.', '1001', '0011' ] }, 
    opposite: Promise { [ '1.', '1000', '.', '0110', '1100' ] }, 
    objective: Promise { [ '1.', '1000', '.', '0110', '1101' ] } } 

und hier reagieren Funktion:

showExcess(){ 
    document.querySelector('.input-wrapper').style.display = 'inline'; 
    RestClient.getExcess(this.state.augend, this.state.addend).then((response) 
    => {  
this.setState({ 
     isReady: true 
    }); 
     console.log(response); 
    }); 
} 

und das consol.log-Ergebnis im Browser: enter image description here

Das Objekt ist leer. Irgendwelche Vorschläge? Ich muss auf Werte von modular, objektiv und entgegengesetzt zugreifen können.

+0

Lösen Sie zuerst Ihre Versprechen. Resolve.all ([convertToModular, Gegenteil, Ziel]). Dann (res.json); –

Antwort

0
router.get('/toExcess', function(req, res){ 
    console.log(req.query); 
    const response = logic.adder(req.query.a, req.query.b); 
    const convertToModular = logic.modularRecordExcess(response); 
    const convertToOpposite = logic.oppositeRecordExcess(response); 
    const convertToObjective = logic.objectiveRecordExcess(response); 
    Promise.all([convertToModular, convertToOpposite, convertToObjective]) 
    .then(function (response) { 
    var add = { 
     modular: response[0], 
     opposite: response[1], 
     objective: response[2], 
    } 
    console.log(add); 
    res.send(add); 
    //or you can pass res.json(response); 
    }) 
.catch(function(err){ 

}); 
}); 
+0

Vielen Dank! Es klappt :) – marta