简体   繁体   中英

Promise { <pending> } ' why is it still pending?' How can I fix this?

So the result in the console shows as -

Promise { <pending> } ' why is it still pending?'
[ { _id: 5a7c6552380e0a299fa752d3, username: 'test', score: 44 } ]

So it tells me Promise { pending } but then follows with the answer that I wanted to see which is -

[ { _id: 5a7c6552380e0a299fa752d3, username: 'test', score: 44 } ]

but how can I fix that promise pending section, it's a console.log that I run at the bottom of the code.

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);
    });
  });
}

resolveAfter1() // resolve function
    .then((result)=>{console.log(result);})
    .catch((error)=>{console.log(error);})

    async function asyncCall() {
      var result = await resolveAfter1();
      // console.log(result);
    }

    console.log(asyncCall(), ' why is it still pending?');

Replace:

console.log(asyncCall(), ' why is it still pending?');

With:

async function run() {
   console.log(await asyncCall());
}

run();

You were printing the result of asyncCall which is an async function . Async functions wrap their returned result in a Promise , and if you want the actual value which the promise resolved to, you have to use await someAsyncFunc() .

Put in a simple example:

 async function asyncCall() { return 1; } async function run() { console.log(asyncCall()); // this doesn't wait for the Promise to resolve console.log(await asyncCall()); // this does } run(); 

Because you are console.log a AsyncFunction directly without await, it will return you a unresolved Promise object

 function resolveAfter1() { return new Promise((resolve, reject) => { setTimeout(resolve('a'), 100) }) } async function asyncCall() { var result = await resolveAfter1(); return result } (async () => { console.log(await asyncCall(), ' It is not pending anymore!!!!') })() 

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM