承诺不使用异步解决并等待

Promise not resolving using async and await

我正在尝试了解 Promises 和 Async/Await。

请理解,我是新手,所以请随意提出尽可能多的建议。

这个想法是模拟与数据库的连接或来自 API 端点的响应,其中 retrieveUserFromFB() 将 return 一个承诺。

然后,异步的 returnUsernameViaUserid() 将调用 retrieveUserFromFB() 并解析承诺。或者这就是我的想法。

async function returnUsernameViaUserid(userId) {
  const result = await retrieveUserFromFB();
  return result;
}


function retrieveUserFromFB() {
  return new Promise(function(resolve, reject) {
    setTimeout(function() {
      resolve({user: 'thisistheusername'});
    }, 1000)
  });
}

console.log(returnUsernameViaUserid(1));

但输出始终是 Promise { } 我将不胜感激任何帮助。 userId 只是一个丰富多彩的细节,没有功能,我没有将它传递给 retrieveUserFromFB()。只是要清楚 =)

一个async functionreturns一个承诺

您的问题是,目前您正在尝试记录始终为 Promise 的异步函数的结果,要解决此问题,请将您的 console.log 放在 async function.

另一个解决方案是在 retrieveUserFromFB 上使用 .then 来完全避免 async function,如果您愿意的话。

async function returnUsernameViaUserid(userId) {
  const result = await retrieveUserFromFB();
  console.log(result);
}


function retrieveUserFromFB() {
  return new Promise(function(resolve, reject) {
    setTimeout(function() {
      resolve({user: 'thisistheusername'});
    }, 1000)
  });
}

returnUsernameViaUserid(1)