javascript - 承诺不使用 async 和 await 解决
问题描述
我正在尝试了解 Promises 和 Async/Await。
请理解,我是新人,因此请随意提供您想要的尽可能多的建议。
这个想法是模拟与数据库的连接或来自 API 端点的响应,retrieveUserFromFB() 将返回一个承诺。
然后,异步的 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
返回一个承诺
您的问题是,目前,您正在尝试记录始终为 a 的异步函数的结果Promise
,要解决此问题,请将您console.log
的async function
.
如果您愿意,另一种解决方案是使用.then
onretrieveUserFromFB
来完全避免这种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)
推荐阅读
- ruby-on-rails - 在 ActiveRecord 模型中使用细化时出现 NoMethodError
- javascript - 在 angular2+ 中使用图像预览拖放图像
- javascript - 将特定参数传递给 React 中具有多个参数的函数
- eclipse - 用于光子 Eclipse 的 WSO2 开发人员工作室
- python - python如何绑定control+shift+0(零)
- reactjs - 使用电子锻造打包时如何预编译打字稿
- excel - 如何在excel中通过数据验证获取最后一行?
- php - 使用尊重验证进行密码验证
- saml-2.0 - 在 SAML 中处理多个 SP 元数据生成器
- powershell - 为什么我不能在 PowerShell 中多次读取 KeyPress?