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

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 { <pending> } ' 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#
bumblebeen Reply to 2018-02-12 10:51:46Z

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))
Andrew
4#
Andrew Reply to 2018-02-12 10:57:15Z

The answer to this was -

asyncCall().then((res) => socket.emit('topic', res))

Thanks for those who helped!

You need to login account before you can post.

About| Privacy statement| Terms of Service| Advertising| Contact us| Help| Sitemap|
Processed in 0.406209 second(s) , Gzip On .

© 2016 Powered by mzan.com design MATCHINFO