繁体   English   中英

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

[英]Promise not resolving using async and await

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

请理解我是新手,请随时为您提供尽可能多的建议。

这个想法是使用retrieveUserFromFB()模拟到数据库的连接或来自API端点的响应,这将返回一个promise。

然后,异步的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返回一个Promise

您的问题是,当前,您正在尝试记录始终是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) 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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