承诺不使用异步解决并等待
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 function
returns一个承诺
您的问题是,目前您正在尝试记录始终为 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)
我正在尝试了解 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 function
returns一个承诺
您的问题是,目前您正在尝试记录始终为 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)