javascript - 为什么 async 和 await 没有在函数之外返回已解决的承诺?
问题描述
我有一个名为 getCat 的异步函数,其中使用了 await 。当响应的控制台日志在其函数内部执行时,它会记录预期的已解决承诺。但是,如果我从另一个函数 displayCat 调用它并记录整个 getCat 函数的结果,那么它会返回一个承诺。但是此时结果应该是相同的,那么为什么我会得到两种不同类型的控制台日志响应?
var getCat = async () => {
const result = await fetch('https://cataas.com/cat')
console.log('response: ', result);
return result;
}
var displayCat = () => {
console.log('getCat() : ', getCat())
}
解决方案
异步函数隐式返回一个 Promise,因此需要像其他任何函数一样等待它。
推荐阅读
- python - 如何从字典列表中删除重复项?
- haskell - Haskell 函数参数(无法匹配类型错误)
- c# - 如何在命令后重新开始我的代码?
- c - C - 如何获取 Char 中的 4 个最低有效位
- swift - 如何在 Swift 中解析附加的 XML 并从中获取所有帐户信息
- bash - 在移动之前就地修剪文件名
- postgresql - 并发“如果不存在则创建表”在 postgres 中失败,并出现“序列已存在”错误
- regex - 正则表达式提取卷曲选项
- java - 尝试使用 json 数据而不是纯文本或 x-www-form-urlencoded 进行 JQuery 发布时出现 CORS 问题
- cordova - 未处理的拒绝错误:带有离子启动的 EACCES