Home How can I make the console.log at the bottom wait until its all complete, then show me the answer instead of waiting?

# How can I make the console.log at the bottom wait until its all complete, then show me the answer instead of waiting?

Andrew
1#
Andrew Published in 2018-02-12 10:39:01Z
 This is the code I have, I know there has been people to explaining the await functions here but I can not seem to understand why mine is not working, inside the function it console.logs the database perfectly, also on the .then section of code, but when it comes to the console.log outside it won't work. function resolveAfter1() { return new Promise((resolve, reject) => { var scoresFromDb = db.account.find({}, { username: 1, score: 1 }).toArray(function(err, result) { if (err) reject(err); else resolve(result); // console.log(result); }); }); } resolveAfter1() // resolve function .then((result)=>{console.log(result);}) .catch((error)=>{console.log(error);})  It won't show on the console.log(result) under either.  async function asyncCall() { var result = await resolveAfter1(); return result // console.log(result); }  To display it under this line, what Im I doing wrong? console.log(asyncCall(), ' why is it still pending?');  result on the console.log Promise { } ' why is it still pending?' 
Akash Dathan
2#
Akash Dathan Reply to 2018-02-12 10:42:06Z
 asyncCall is an async function, you have to await for it to resolve. console.log(await asyncCall())
bumblebeen
3#
 because console.log doesnt wait for the async call to finish. It already evaluates what the value of the asyncCall which therefore is a Pending Promise. If you want to emit something because of the asyncCall then emit the value inside the asyncCall asyncCall.then((res) => socket.emit('topic', res)) 
 The answer to this was - asyncCall().then((res) => socket.emit('topic', res))  Thanks for those who helped!